读书人

数组常见几种排序步骤

发布时间: 2012-10-09 10:21:45 作者: rapoo

数组常见几种排序方法

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(){}

?

读书人网 >编程

热点推荐