Java中几种常见的排序方法
1.冒泡排序
/**
* 对指定的数组进行排序 把最小的排出来,然后再排第二小的。。。。
*
* @param arr
* 要排序的数组
* @return 返回排序之后的数组
*/
public int[] maopao {//int[] :返回值类型
for {
for {//第i个与第i+1个比较再与第i+2个比较
if {
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[] :返回值类型
for {
int lowerindex = i;
// 找出最小值的索引
for {
if {
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[] :返回值类型
for {
for {
if {// 与自己前面的比较
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 {
// 分组
for {
// 每个组内排序
for {
int temp = arr[i];
int j = 0;
for {
if {
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{}