`

数组常见几种排序方法

阅读更多

Java中几种常见的排序方法

 

1.冒泡排序

/**
	 * 对指定的数组进行排序 把最小的排出来,然后再排第二小的。。。。
	 * 
	 * @param arr
	 *            要排序的数组
	 * @return 返回排序之后的数组
	 */
	public int[] maopao(int[] arr) {//int[] :返回值类型
		for (int i = 0; i < arr.length; i++) {
			for (int j = i + 1; j < arr.length; j++) {//第i个与第i+1个比较再与第i+2个比较
				if (arr[i] > arr[j]) {
					int temp = arr[i];
					arr[i] = arr[j];
					arr[j] = temp;//把最小的比出来放在最前面
				}// end if
			}// end for{}
		}// end for{ {} }
		return arr;
	}// end int[] mapao()

 

2.选择排序

         每一趟从待排序的数据元素中选择最小的一个元素,顺序放在已排序好的数列的最后,知道全部排完:

/**
	 * 我怎么感觉和那个冒泡排序没什么区别啊? 选择排序
	 * 
	 * @param arr
	 * @return
	 */
	public int[] xuanze(int[] arr) {//int[] :返回值类型
		for (int i = 0; i < arr.length; i++) {
			int lowerindex = i;
			// 找出最小值的索引
			for (int j = i + 1; j < arr.length; j++) {
				if (arr[j] < arr[lowerindex]) {
					lowerindex = j;
				}//end if()
			}//end for(){}
			// 交换
			int temp = arr[i];
			arr[i] = arr[lowerindex];
			arr[lowerindex] = temp;
		}//end for{ {} }
		return arr;
	}//end int[] xuanze

 选择排序示例:

        初始关键字 [49 38 65 97 76 13 27 49]

  第一趟排序后 13 [38 65 97 76 49 27 49] //直接把13取出来

  第二趟排序后 13 27 [65 97 76 49 38 49] //再把27取出

  第三趟排序后 13 27 38 [97 76 49 65 49]

  第四趟排序后 13 27 38 49 [76 97 65 49 ]

  第五趟排序后 13 27 38 49 49 [97 65 76]

  第六趟排序后 13 27 38 49 49 65 [97 76]

  第七趟排序后 13 27 38 49 49 65 76 [97]

  最后排序结果 13 27 38 49 49 65 76 97

 

3.插入排序

         将一个数据插入到已经排好序的有序数据中,从而得到一个新的,个数加一的有序数据:

/**
	 * 插入排序
	 * 
	 * @param arr
	 * @return
	 */
	public int[] charu(int[] arr) {// int[] :返回值类型
		for (int i = 1; i < arr.length; i++) {
			for (int j = i; j > 0; j--) {
				if (arr[j] < arr[j - 1]) {// 与自己前面的比较
					int temp = arr[j];// 交换
					arr[j] = arr[j - 1];
					arr[j - 1] = temp;
				}// end if()
			}// end for(){}
		}// end for for()
		return arr;
	}// end int[]charu

 插入排序示例:

 

4.希尔排序

        插入排序的一种(还不怎么懂);

/**
	 * 希尔排序
	 * 
	 * @param arr
	 * @return
	 */
	public int[] shell(int[] arr) {
		// 分组
		for (int increment = arr.length / 2; increment > 0; increment /= 2) {
			// 每个组内排序
			for (int i = increment; i < arr.length; i++) {
				int temp = arr[i];
				int j = 0;
				for (j = i; j > increment; j -= increment) {
					if (temp < arr[i - increment]) {
						arr[j] = arr[i - increment];
					} else {
						break;
					}// end if
				}// end for{}
				arr[j] = temp;
			}// end for for{}
		}// end for for for{}
		return arr;
	}// end shell(){}

 

  • 大小: 4.5 KB
0
0
分享到:
评论

相关推荐

    数组的几种排序方法

    涵盖了数组的冒泡、选择、插入等常见排序方法,并有详细的注释,通俗易懂

    几种常见的排序方法

    几种常见的排序方法 1. 选择排序法基本思想: 每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。 2.插入排序(Insertion Sort)的基本思想是...

    几种常见排序算法实现

    几种常见排序 基于比较的排序算法: 下界是 nlgn 1.1 SelectionSort:每次选出最下的元素,放在当前循环最左边的位置。 1.2 BubbleSort:每次比较相邻的两个数,使得最大的数像气泡一样冒到最右边。 1. 3 Insertion...

    Java实现几种常见排序方法-直插、冒泡、选择、快排、堆排等

    日常操作中常见的排序方法有:冒泡排序、快速排序、选择排序、插入排序、希尔排序,甚至还有基数排序、鸡尾酒排序、桶排序、鸽巢排序、归并排序等。 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一...

    JavaScript数组排序的六种常见算法总结

    开发中,遇到数组排序的需求很频繁,这篇文章会介绍几个常见排序思路。 一、希尔排序(性能最好) 如果要从大到小排列,则 while(arr[n] &gt; arr[n – interval] && n &gt; 0) 。 // 希尔排序算法 function xier(arr){ ...

    Java时间类型和字符串之间的各种转换及几种常见的排序

    个人积累的Java工具类扩展类,包括字符数组转字符串,质数判断,辗转相除法求最大公约数,对字符串的一些判断,几种常见的数组排序、插入、查找等,闰年判断 日期字符串解析等与日期有关的操作,随机字符串。...

    Java常见的排序算法

    Java中常见的排序算法有以下几种: 冒泡排序(Bubble Sort):通过比较相邻元素的大小,将较大的元素逐渐向后移动,直到整个序列有序。 选择排序(Selection Sort):每次遍历数组,找到最小(或最大)的元素,将其...

    JavaScript中几种常见排序算法小结

    这是一个非常快的排序方式,V8的sort方法就使用快速排序和插入排序的结合 希尔排序:在非chrome下数组长度小于1000,希尔排序比快速更快 系统方法:在forfox下系统的这个方法非常快 算法源码 代码如下: /

    JAVA中常见的排序

    几种常见的排序法,包括:冒泡排序、选择排序、插入法排序、希尔排序、数组排序

    几种常用的排序算法的C/C++实现

    分为三个步骤,1是自动生成待排序数组,2是几种常见的排序算法(有直接插入排序,冒泡排序,选择排序,shell排序,快速排序,堆排序),及其排序之后的验证(3). 用VC++6.0打开编译即可自动生成工程文件。

    Java各种排序算法_随机数

    Java 排序 随机数 算法收录了几种java常见的排序算法!

    数组列优先顺序.zip

    常见的算法包括但不限于以下几种: 排序算法:排序算法是将一组数据按照一定的顺序排列的算法。常见的排序算法包括冒泡排序、插入排序、选择排序、快速排序、归并排序等。 搜索算法:搜索算法用于在数据集中查找...

    数组行优先顺序.zip

    常见的算法包括但不限于以下几种: 排序算法:排序算法是将一组数据按照一定的顺序排列的算法。常见的排序算法包括冒泡排序、插入排序、选择排序、快速排序、归并排序等。 搜索算法:搜索算法用于在数据集中查找...

    字符串-关于字符串的创建-常见函数

    字符串 -关于字符串创建,以及所包含的常见函数 数组 -关于数组的创建,以及它常用的函数 几种常见的排序算法 冒泡排序 选择排序

    基于JavaScript实现的插入排序算法分析

    下面介绍几种常见的内部排序方式: 插入排序 插入排序是一种最简单的排序方法,它的基本操作是将一个记录插入已排好序的有序表中,从而得到一个新的、记录数加1的有序表。 插入排序有两个循环,外循环将数组元素挨个...

    C 语言编程常见问题解答.chm

    3.1 哪一种排序方法最方便? 3.2 哪一种排序方法最快? 3.3 当要排序的数据集因太大而无法全部装入内存时,应怎样排序? 3.4 哪一种查找方法最方便? 3.5 哪一种查找方法最快? 3.6 什么是哈希查找? 3.7 ...

    SortVisualizer:一个Web应用程序,它以多种可互换的方式可视化12种以上的排序算法

    它使用几种可互换的方法进行线性数据可视化。 合并排序的示例 双枢轴快速排序示例 tim排序示例 基数排序示例 目录 插入家庭 合并家庭 选择家庭 交流家庭 快速分类 双枢轴快速分类 非比较家庭 计数排序 基数排序...

    algos:Ruby中的 CLRS 算法

    这是 Ruby 中几种常见算法(和数据结构)的实现。 其中很大一部分来自于算法描述。 排序算法: 归并排序 插入排序 堆排序 快速排序 计数排序 基数排序 桶排序 算法: 最大子数组(递归,不是最优的) kadane ...

    C语言进阶-牟海军.pdf

    第11章则对所有程序员必须掌握的几种算法进行了详细的讲解;附录经验性地总结了如何养成良好的编码习惯,这对所有开发者都尤为重要。 本书主要内容:  堆和栈、全局变量和局部变量、生存期和作用域、内部函数和...

    C语言进阶 作者 Wrestle.Wu

    第11章则对所有程序员必须掌握的几种算法进行了详细的讲解;附录经验性地总结了如何养成良好的编码习惯,这对所有开发者都尤为重要。 本书主要内容:  堆和栈、全局变量和局部变量、生存期和作用域、内部函数和...

Global site tag (gtag.js) - Google Analytics