排序算法
文章平均质量分 57
Porcelain_cs
如人饮水冷暖自知
展开
-
排序算法(一)--快速排序
快速排序快速排序 思想 示例 关键代码 复杂度思想基于划分的思想,假设选择数组最左边的元素作为枢纽,一指针从数组最左边开始,寻找大于枢纽的元素,另一指针从数组最右边开始,寻找小于枢纽的元素,然后交换两指针位置上值,直到指针重合,交换指针与数组最左边的元素,这样枢纽左边的元素都比枢纽小,枢纽右边的元素都比枢纽大。示例关键代码//找出分界点 public static int partition(int原创 2017-03-24 10:29:53 · 1569 阅读 · 0 评论 -
排序算法(二)-- 选择排序
选择排序 冒泡排序是每一次都可能要交换,而选择排序是在比较时记下a[i]的位置 最后来交换 , 所以他们的交换过程是不一样的, 而查找的过程是一样的,效率不会比冒泡的低...原创 2017-03-24 11:40:05 · 1366 阅读 · 0 评论 -
排序算法(三)-- 归并排序
归并排序 思想 把一个数组分成两半,排序每一半,然后把排好序的两半归并成一个有序的数组,那么如何为每一半排序呢?递归调用自身就行啦! 示例 关键代码 public static void sort(int[] array,int left,int right){ if(left>=right){ return; }原创 2017-03-26 15:28:32 · 1344 阅读 · 0 评论 -
排序算法(四)-- 堆排序
将初始待排序关键字序列(R0,R2....Rn-1)构建成大顶堆。 将堆顶元素R[0]与最后一个元素R[n-1]交换,此时得到新的无序区(R0,R1,R2,......Rn-2)和新的有序区(R[n-1]),且满足R[0,2...n-2]<=R[n-1]; 由于交换后新的堆顶R[0]可能违反堆的性质,因此需要对当前无序区(R0,R1,R2,......Rn-2)调整为新堆,然后再次将R[0]与无序区最后一个元素交换,得到新的无序区(R0,R2....Rn-3)和新的有序区(R[n-1],R[n-2])。不原创 2017-03-26 19:38:00 · 898 阅读 · 0 评论