`
zeyuphoenix
  • 浏览: 56014 次
  • 性别: 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));
	}
}

 

分享到:
评论
发表评论

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

相关推荐

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

    插入排序 自己写着玩 防止忘记 传网上吧 可以直接用 不用四处找了

    易语言提醒备忘时钟

    易语言提醒备忘时钟源码,提醒备忘时钟,子程序_读取数据库,子程序_时间数组排序

    Android 实用工具 备忘录

    这是一款非常实用,好看的...程序实现备忘录的添加、删除、查看、修改、启动、关闭等功能,可以设定重复提醒时间,可以选择闹铃提醒和消息提醒两种提醒方式,可以选择时间、优先级等排序显示。UI设计有倒计时显示功能。

    用C语言编写的备忘录程序(事件记录程序)

    用纯C语言编写的事件记录程序(备忘录),包括添加事件,删除事件,查看事件等功能。有不同的排序选项和查看选项。对每一次额度输入都进行了检错。程序的完整性良好

    备忘录(记事本)小应用

    这是一款实现了备忘录的小应用源码,该应用也可以做记事本应用,应用的基本功能包括:新建、修改、删除某条备忘录,可以...每次新建或修改备忘录保存当时时间,按创建或修改备忘录时间排序,这也是一款很简单的源码。

    leetcode备忘录系统-Algorithms-DataStructures:算法-数据结构

    leetcode备忘录系统算法-数据结构 两个不错的排序算法及其 Big-O(完成) 归并排序 快速排序 冒泡排序 基本数据结构实现及其 Big-O 复杂性 哈希图 堆 队列 双端队列双端队列 链表 反转链表 合并两个排序列表 回文...

    简易备忘录

    简易备忘录demo,总共分为三个模块:添加待办事项,个人事项列表以及历史纪录。数据存储在数据库,使用了qq侧滑删除效果,按时间顺序排序,类似于iOS的时间选择器。

    基本排序算法及其在MapReduce的应用

    该文档为学习基本排序算法过程中的学习笔记,大部分内容从网络上其他渠道也能得到,仅用于记录备忘之用。冒泡、选择、插入三种作为基本的排序算法是必须要掌握的,而在MapReduce的实际应用中。在Map阶段,k-v溢写时...

    MySQL排序中使用CASE WHEN的方法示例

    现在写篇博客备忘~ 数据库版本:MySQL 5.6.42 条件: 某字段代表该数据的状态取值为非负整数,0表示无状态。 需求: 以该字段升序排序,同时需要将值为0的数据放在最后。 首先我们看一下,表的结构: 正常的使用...

    百货进销存第七版 适配百货小超市 备忘功能 库存销售查询 进销存系统

    经过几年的使用和修改,这个开票功能已经比较完善了。 第一次运行时会创建一个MDB数据库,... 该模块的功能是超级列表框排序。 主程序运行后,会生成1到2个文件,一个是数据库,一个是TXT,用来记录备忘录的临时文本。

    百货进销存第七版 适配百货小超市 备忘功能 库存销售查询 进销存系统源码

    经过几年的使用和修改,这个开票功能已经比较完善了。 第一次运行时会创建一个MDB数据库,... 该模块的功能是超级列表框排序。 主程序运行后,会生成1到2个文件,一个是数据库,一个是TXT,用来记录备忘录的临时文本。

    idea插件 源码备忘录 备注记事本

    1、支持导出导入 2、支持查看详细信息 3、支持复制详细内容 ...8、支持拖动排序 9、支持范围选择和自动选择一行 10、支持java类中所有方法,并支持跳转 11、支持源码跳转 等等 支持一对一服务 价格合适,还支持定做

    【刷题】 重难点备忘录

    PriorityQueue 部分排序   各种操作 链表反转: 206. 反转链表 #怎么突然报错了 哦 while(head) 应该是head1 可是 这俩变量不应该一样吗 #不一样! head还剩1 head1是空#怎么突然报错了 # Definition for singly...

    codehouse:一个包含 300 多个开发人员备忘单的全新世界

    按类别或来源过滤、按时间或受欢迎程度排序、暗模式、书签备忘单、添加新备忘单、请求功能以及更多功能,使应用程序令人惊叹! :love-you_gesture: :rocket: 演示 试用应用程序:代码屋 :face_with_monocle: 特征...

    cpp-codes:C ++备忘录

    C ++备忘录 用C ++实现 树 简单堆易于删除和插入最大值 二进制搜索用于查找数据以升序 堆二进制堆可以插入数据并删除最小数据 二叉搜索树 搜索最小值很容易,并且搜索和删除将采用最差的O(n)计算(当所有节点都...

    eclipse-cheatsheet:Eclipse SDK的可打印备忘单

    Eclipse备忘单 Eclipse SDK的可打印备忘单 Eclipse版本 Windows和Linux PDF格式 ODT PDF格式 ODT 4.17 / 4.18 4.14 / 4.15 / 4.16 ...排序文件( cat FILE | sort &gt; SORTED_FILE ) 与最新版本的A

    让您的仪表放大器设计发挥极大效能

    仪表放大器设计的注意事项和小信号处理.....

    angularjs表格ng-table使用备忘录

    项目中用到angularjs的表格ng-table,功能相当强大,像搜索、排序、checkbox、分页、每页表格显示数目等都有。API,demo什么的也只能参考官网了。这里做个备忘,哪天肯定还会用到。 HTML: &lt;!DOCTYPE html&gt; &lt...

Global site tag (gtag.js) - Google Analytics