1.冒泡排序
1 3 5 7 9 2 4 6 8
i=0 1 3 5 7 2 4 6 8 9
i=1 1 3 5 7 2 4 6 8 9
i=2 1 3 5 2 4 6 7 8 9
i=3 1 3 5 2 4 6 7 8 9
i=4 1 3 2 4 5 6 7 8 9
i=5 1 3 2 4 5 6 7 8 9
i=6 1 2 3 4 5 6 7 8 9
i=7 1 2 3 4 5 6 7 8 9
从i=0开始,两两比较直至i=array.length-1-i。
2.选择排序
1 3 5 7 9 2 4 6 8
i=0 1 3 5 7 9 2 4 6 8
i=1 1 2 5 7 9 3 4 6 8
i=2 1 2 3 7 9 5 4 6 8
i=3 1 2 3 4 9 5 7 6 8
i=4 1 2 3 4 5 9 7 6 8
i=5 1 2 3 4 5 6 7 9 8
i=6 1 2 3 4 5 6 7 9 8
i=7 1 2 3 4 5 6 7 8 9
从i=0开始,从后面至i=array.length-1-i的元素中,选择出最小的元素与i元素置换。
3.插入排序
轨迹与选择排序相同,区别是默认i之前的元素有序,把i元素置换到前面正确的升序位置中。
4.希尔排序
1 3 5 7 9 2 4 6 8
i=3 1 3 2 4 6 5 7 9 8
(划分成数组[1,7,4],[3,9,6],[5,2,8],排序后为[1,4,7],[3,6,9],[2,5,8])
i=2 1 3 2 4 5 6 7 9 8
i=1 1 2 3 4 5 6 7 8 9
按照一个值i将数组进行划分,将划分出的数组分别进行插入排序,然后合并,递减i的值至1,完成排序。
希尔排序的优势在于数据量较大时可执行较少次数的元素置换。
(关于值i的设定目前还没研究清楚。)
5.快速排序
1 3 5 7 9 2 4 6 8
i=0 1 3 5 7 9 2 4 6 8
i=1 1 2 5 7 9 3 4 6 8
1 2 3 7 9 5 4 6 8
i=2 1 2 3 6 9 5 4 7 8
1 2 3 6 7 5 4 9 8
1 2 3 6 4 5 7 9 8
i=3 1 2 3 5 4 6 7 8 9
i=4 1 2 3 4 5 6 7 8 9
快速排序的优势在于一次即可确定该元素的最终位置。
6.归并排序
1 3 5 7 9 2 4 6 8
i=0 1 3 5 7 2 9 4 6 8
i=1 1 3 5 7 2 4 6 9 8
i=2 1 2 3 4 5 6 7 9 8
i=3 1 2 3 4 5 6 7 8 9
先划分为若干个小数组,然后再两两进行归并。
市面上关于排序有巨多版本,我只记录我的理解,以后会附上java代码实现。
posted @
2013-02-20 10:19
息搏
阅读(
132)
评论()
收藏
举报