java的七种经典排序

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

此文中的七种排序算法为个人总结,程序均在eclipse中验证成功,可供参考

package sort;

/*

* 各种排序方法总结

*/

public class Sort {

public static void main(String[] args) {

int[] array={4,9,6,7,2,3,1,5,8,0};

Sort.heapSort(array);

for(int i=0;i

System.out.print(array[i]);

}

}

/*

* 1.冒泡法排序:那么就依次相邻两个数比较大小,然后把大(小)的数放在后面,依次类推。冒泡排序时间复杂度O(n2)

*/

public static int[] bubbleSort(int[] array){

int temp=0;

for(int i=0;i

for(int j=0;j

if(array[i]

temp=array[i];

array[i]=array[j];

array[j]=temp;

}

}

}

return array;

}

/*

* 2.直接选择法排序:从当前数中选出一个最大或者最小的值排在最前面,

* 然后从剩下的数中选出剩下数的最值排在已经排序的数的后面,算法时间复杂度O(n2) */

public static int[] selectSort(int[] array) {

for (int i = 0; i < array.length; i++) {

int index = 0;

for (int j = 0; j < array.length - i; j++) {

if (array[j] > array[index]) {

index = j;

}

}

int temp = array[array.length - i - 1];

array[array.length - i - 1] = array[index];

array[index] = temp;

}

return array;

}

public static int[] selectSort1(int[] array) {

for (int i = 0; i < array.length; i++) {

int minIndex = i;

for (int j = i + 1; j < array.length; j++) {

if (array[minIndex] > array[j]) {

minIndex = j;

}

}

int temp = array[i];

array[i] = array[minIndex];

array[minIndex] = temp;

}

return array;

}

/*

* 3.反转排序:反转数组

*/

public static int[] reverseSort(int[] array){

int temp = 0;

for(int i=0;i

temp=array[i];

array[i]=array[array.length-i-1];

array[array.length-i-1]=temp;

}

return array;

}

/*

* 4.插入排序:依次遍历数组,假设前面已经有一部分排过序的,

* 当前待排数字跟前面的数字依次比较大小,将其插在对应顺序位置,算法时间复杂度

O(n2)

*/

public static int[] insertSort(int[] array){

int temp;

for(int i=1;i

temp=array[i];

int j=i;

while(--j>=0&&array[j]>temp){

array[j+1]=array[j];

}

array[j+1]=temp;

}

return array;

}

/*

* 5.希尔排序:希尔排序是对插入排序的改进,可以把当前数据分组,每个分组都有一定间隔

* 它们两两比较大小。然后再减小间隔范围,或者说增多分组个数,算法时间复杂度O(n2) */

public static int[] shellSort(int[] array){

for(int i=array.length/2;i>0;i/=2){

int temp;

int k;

for(int j=i;j

temp = array[j];

for(k=j-i;(k>=0)&&array[k]>temp;k-=i)

{

array[k+i] = array[k];

相关文档
最新文档