您的位置:首页 > 编程语言 > Java开发

java常用的8种排序方法

2017-11-16 14:38 274 查看
Java常用的8种排序方法:



1.直接插入排序:

   


直接插入排序的设计思路(默认由小到大排序):

1.数组第一位默认为有序位,设置for循环遍历;

2.从第i位与前一位的值开始比较,如果小于前一位,则设置一个中间变量保存第i位的值;

3.设置变量k,用于记录被替换的值的位置;

4.通过for循环替换,如果值大于第i位的值,那么将第i位的值替换为这个大的值,之后继续与更前位置的值比较,如果还是大于第i位的值,那么将i-1位的值替换,然后继续比较,每次往前进一位比较时,k的值都要进行递减,如此反复。

5.直到值比第i位小时,将k位置的值替换成第i位的值。

直接插入排序的逻辑流程图,如下:

  


2.希尔排序



希尔排序的设计思路:

1.根据数组长度取一半(d = array.length/2),for循环遍历,循环周期就是数组长度的一半;

2.用for循环取temp的值;

3.再用for循环,比较temp的值与对应位置的值大小,如果array[j]的值大于temp,则将array[j+d]的值替换为array[j];

4.最后将array[j]的值替换为temp,如此反复。

希尔排序的逻辑流程图,如下:



3.简单选择排序



简单选择排序的设计思路:

1.数组for循环遍历,设置position记录位置;

2.再设置一个for循环用于比较大小,找出最小的数,

3.将第一个数替换成最小的数,将原先最小的数所在的位置替换为第一个数的值;

4.排除第一个数,继续之前的循环,如此反复。

简单选择排序逻辑流程图,如下:



4.堆排序(二叉树)







堆排序的设计思路:



1.建堆,即将数组堆化,首先按照数组的顺序建堆,然后根据堆的规则进行调整;

2.堆调整好后,开始进行交换,堆顶与最后一个数进行交换,然后将最大的数,即交换后最后一个数移出;

3.交换后的数,重新调整以满足堆的规则,之后继续交换移出最大的数,如此反复。

5.冒泡排序



冒泡排序的设计思路:



1.一组数中,让相邻的两个数依次比较,让较大的数排在后面,较小的数排在前面,这样最大的数就会在最后一位;

2.然后除去最后一位数,继续第二轮比较,第二轮结束第二大的数就会在倒数第二位,如此反复。

6.快速排序





快速排序的设计思路:

1.选择一个基准元素,通常选择第一个元素或者最后一个元素,通过一趟扫描;

2.将待排序列分成两部分,一部分比基准元素小,一部分大于等于基准元素,此时基准元素在其排好序后的正确位置;

3.然后再用同样的方法递归地排序划分的两部分。



7.归并排序





归并排序的设计思路:



1.将待排序序列分为若干子序列,每个子序列是有序的;

2.然后再把有序子序列合并为整体有序序列。

8.基数排序



基数排序的设计思路:



1.将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。

2.然后,从最低位开始,依次进行排序;

3.这样从最低位排序一直到最高位排序完成后,数列就变成一个有序序列。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: