java常用的8种排序方法

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.这样从最低位排序一直到最高位排序完成后,数列就变成一个有序序列。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值