`
zeyuphoenix
  • 浏览: 59784 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

排序备忘

J# 
阅读更多
import java.util.Arrays;

/**
 * The Class Sort.
 */
public class Sort {

	/**
	 * The main method.
	 * 
	 * @param args
	 *            the args
	 */
	public static void main(String[] args) {
		int[] arrs = new int[] { 121, 32, 14, 125, 638, 119, 230, 469 };
		bubbleSort(arrs.clone());
		selectSort(arrs.clone());
		insertSort(arrs.clone());
		shellSort(arrs.clone());

		System.out.println("quick sort start: ");
		display(arrs);

		display(quickSort(arrs.clone(), 0, arrs.length - 1));
		System.out.println("quick sort end. ");

		System.out.println("java arrays sort: ");
		display(arrs);
		Arrays.sort(arrs);
		display(arrs);
		System.out.println("java arrays sort end. ");
	}

	// 冒泡排序
	// O(n^2) M(n^2)
	/**
	 * Sort bubble.
	 * 
	 * @param arrs
	 *            the arrs
	 */
	public static void bubbleSort(int[] arrs) {
		System.out.println("bubble sort start: ");
		display(arrs);
		int temp = 0;
		for (int i = arrs.length - 1; i > 0; i--) {
			for (int j = 0; j < i; j++) {
				if (arrs[j] > arrs[j + 1]) {
					temp = arrs[j];
					arrs[j] = arrs[j + 1];
					arrs[j + 1] = temp;
				}
			}
		}
		display(arrs);
		System.out.println("bubble sort end. ");
	}

	// 选择排序
	// O(n^2) M(n)
	/**
	 * Sort select.
	 * 
	 * @param arrs
	 *            the arrs
	 */
	public static void selectSort(int[] arrs) {
		System.out.println("select sort start: ");
		display(arrs);

		int min = 0;
		int temp = 0;
		for (int i = 0; i < arrs.length - 1; i++) {
			min = i;
			for (int j = i + 1; j < arrs.length; j++) {
				if (arrs[min] > arrs[j]) {

					temp = arrs[min];
					arrs[min] = arrs[j];
					arrs[j] = temp;
				}
			}
		}

		display(arrs);
		System.out.println("select sort end. ");
	}

	// 插入排序
	// O(n^2) M(n)
	/**
	 * Sort insert.
	 * 
	 * @param arrs
	 *            the arrs
	 */
	public static void insertSort(int[] arrs) {
		System.out.println("insert sort start: ");
		display(arrs);
		int temp = 0;
		int t = 0;
		for (int i = 1; i < arrs.length; i++) {
			temp = arrs[i];
			t = i;
			while (t > 0 && arrs[t - 1] >= temp) {
				arrs[t] = arrs[t - 1];
				t--;
			}
			arrs[t] = temp;
		}
		display(arrs);
		System.out.println("insert sort end. ");
	}

	// 希尔排序
	// O(n^3/2) M(n)
	/**
	 * Shell sort.
	 * 
	 * @param arrs
	 *            the arrs
	 */
	public static void shellSort(int[] arrs) {
		System.out.println("shell sort start: ");
		display(arrs);
		int h = 0;
		while (h <= arrs.length / 3) {
			h = h * 3 + 1;
		}
		int temp = 0;
		int outer = 0;
		int inner = 0;
		while (h > 0) {
			for (outer = h; outer < arrs.length; outer++) {
				temp = arrs[outer];
				inner = outer;
				while (inner > h - 1 && arrs[inner - h] >= temp) {

					arrs[inner] = arrs[inner - h];
					inner -= h;
				}
				arrs[inner] = temp;
			}
			h = (h - 1) / 3;
		}

		display(arrs);
		System.out.println("shell sort end. ");
	}

	// 快速排序
	// O(nlogn) M(logn)
	/**
	 * Quick sort.
	 * 
	 * @param arrs
	 *            the arrs
	 * @param istart
	 *            the istart
	 * @param iend
	 *            the iend
	 * 
	 * @return the int[]
	 */

	public static int[] quickSort(int[] pData, int left, int right) {
		int i = left, j = right;
		int middle, strTemp;

		middle = pData[(left + right) / 2];
		do {
			while ((pData[i] < middle) && (i < right)) {
				i++;
			}
			while ((pData[j] > middle) && (j > left)) {
				j--;
			}
			if (i <= j) {
				strTemp = pData[i];
				pData[i] = pData[j];
				pData[j] = strTemp;
				i++;
				j--;
			}
		} while (i <= j);

		if (left < j) {
			quickSort(pData, left, j);
		}

		if (right > i) {
			quickSort(pData, i, right);
		}
		return pData;
	}

	/**
	 * Display.
	 * 
	 * @param arrs
	 *            the arrs
	 */
	private static void display(int[] arrs) {
		StringBuffer buffer = new StringBuffer("the array is: ");
		for (int i : arrs) {
			buffer.append(i + ", ");
		}
		System.out.println(buffer.toString().substring(0, buffer.length() - 2));
	}
}

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    备忘录实例添加备忘信息和查看备忘信息

    这可能包括排序备忘(如按日期或字母顺序)、搜索备忘(通过关键字匹配)等功能。在J2ME中,由于资源有限,必须谨慎处理内存管理和性能优化。 6. **EclipseME开发环境**: EclipseME是一个强大的J2ME开发工具,它...

    Android_实战_备忘录

    为了提升用户体验,应用可能还包含了一些额外的功能,如搜索和排序备忘。这需要在SQLite查询中加入相应的条件,或者在Java代码中实现逻辑来过滤和排序列表项。此外,考虑到数据安全,应用可能实现了备份和恢复功能,...

    备忘录系统

    3. 查看与管理:用户可以浏览所有备忘录,搜索特定内容,还可以根据日期或其他属性排序备忘录,方便查找和管理。 四、系统架构与设计 1. 用户界面:系统可能采用了MFC中的对话框类(CDialog)来创建用户交互界面,...

    基于Android备忘录软件的设计与实现.pdf

    此外,为了提高操作的便捷性,软件采用了Google的Material Design设计原则,提供美观的界面和流畅的拖拽操作,使得用户能直观地组织和排序备忘录。 与其他备忘录应用相比,本文设计的Android备忘录软件特别关注用户...

    j2me RMS记录管理系统 备忘录

    5. **AppointmentComparator.java**:这是一个比较器类,用于比较Appointment对象,可能用于排序备忘事项列表。这使得用户可以根据日期、时间或其他标准对备忘录进行排序。 6. **设计图.png**:这是一个图形设计...

    VB工作备忘录设计与实现(源代码+系统).rar

    在算法选择上,可能需要考虑如何高效地搜索、排序备忘。错误处理确保了程序的稳定性和用户体验。 总之,《VB工作备忘录设计与实现》项目涵盖了VB编程的基础知识,如控件使用、事件处理、数据库操作和面向对象编程,...

    插入排序 C++实现 自己备忘

    它的基本思想是将待排序的元素分为已排序区间和未排序区间,每次从未排序区间取出一个元素,插入到已排序区间的适当位置,使得已排序区间保持有序状态。下面我们将详细探讨插入排序的原理、C++实现以及其应用。 ###...

    备忘录系统设计

    此外,用户可能还需要按照时间、优先级、标签等方式对备忘录进行分类和排序。 2. **用户界面设计**:良好的用户体验是吸引用户的关键。设计简洁直观的界面,如清晰的创建按钮、易用的编辑工具和高效的搜索功能,能...

    C语言备忘录程序代码

    `intcmp(const void *a, const void *b)`是一个通用比较函数,通常用于排序算法中,此处可能是为了对备忘录按某种顺序进行排序。 ### 程序运行流程 程序首先会显示欢迎界面,随后进入主循环,提供用户选择:添加新...

    C#自制桌面备忘录(自制日历)

    界面应包含日历视图、备忘录列表、新建/编辑备忘录窗体等元素,同时提供搜索、过滤和排序等功能。 七、事件驱动编程 在C#中,事件驱动编程是一种常见的编程模型,用于处理用户交互。例如,当用户点击日期时,程序会...

    备忘录--C++程序

    2. **排序与搜索**:为备忘录添加排序功能(按日期或其他标准),并实现快速查找功能。 3. **界面美化**:可以使用C++的终端控制库,如ncurses,提高命令行界面的用户体验。 通过以上步骤,我们可以构建一个功能...

    c# 备忘录源码(含数据库)

    此外,为了提供良好的用户体验,备忘录应用程序可能还包括搜索、排序和过滤等功能。这些功能需要编写SQL查询语句,利用LIKE运算符进行模糊匹配,ORDER BY子句进行排序,以及WHERE子句进行条件过滤。在C#代码中,这些...

    java课设--个人备忘录管理系统

    搜索功能允许用户按关键词查找备忘录,而排序功能可以按照时间、标题等标准对备忘录列表进行排列。 最后,考虑到项目的教学性质,可能还会涉及到软件工程的一些基本原则,如代码结构、注释规范、模块化设计以及测试...

    Android备忘录系统的开发

    在Android平台上,开发一个备忘录系统是一项常见的实践任务,对于初学者来说,这是一个极好的学习项目,因为它涵盖了Android开发的基础知识以及一些高级特性。在这个实例中,我们将深入探讨如何构建这样一个系统,从...

    工作备忘录V1.1 易语言无壳

    用户可以在这个数据库中记录每项工作任务的详细信息,包括工作内容、时间安排、进度更新等,而数据库提供的查询、筛选和排序功能,让工作备忘录不仅仅是一个记录工具,它还是一个能够帮助用户进行时间管理和工作分析...

    个人备忘录源码

    用户可以创建新的备忘,编辑现有条目,按日期、优先级或其他自定义条件进行排序和搜索。同时,通过与Access数据库的交互,这些备忘录的数据得以持久化存储,保证即使在程序关闭后也能保存用户的记录。 Delphi中的...

    易用的桌面备忘录(含闹铃功能)

    用户可以将每天的任务按优先级排序,设置完成期限,并与日历同步,形成可视化的时间表。此外,应用还提供了智能建议,根据用户的习惯和空闲时间推荐最佳的处理任务时段,从而优化时间利用。 至于压缩包中的"备忘录...

    基于android的备忘录程序设计

    为了提升用户体验,备忘录应用可能还包括搜索功能,让用户可以快速找到特定的备忘录,以及排序和过滤选项。时间管理和通知也是重要的功能,比如设定提醒,当备忘录到达预设时间时,通过系统通知提醒用户。 总之,...

    python使用tkinter实现简单有界面的备忘录

    此外,这个应用还可以扩展,比如添加文件保存和加载功能,或者实现更复杂的搜索和排序算法。 总结,使用Tkinter创建备忘录应用涉及以下知识点: 1. Tkinter库的导入与使用。 2. GUI元素(如窗口、按钮、文本框、...

    一个简单的备忘录

    同时,由于是数字形式,这类备忘录通常还支持搜索、分类、排序等高级功能,使管理信息更加高效。 【压缩包子文件的文件名称列表】:clock "clock"这个名字很可能指的是程序中的一个关键组件或模块,可能是一个计时...

Global site tag (gtag.js) - Google Analytics