QuickSort 快排算法 java
2016-03-05 14:23
399 查看
快排算法是一种简单而又快速的算法,由冒泡法改进而来,效率高,而且代码量不大,较有代表性,在面试中经常被问到。
这里的自己看了几个帖子,手写完成了该算法。
可以通过打印,查看算法完成的过程。
引用白话经典算法系列之六 快速排序 快速搞定
这里的自己看了几个帖子,手写完成了该算法。
可以通过打印,查看算法完成的过程。
引用白话经典算法系列之六 快速排序 快速搞定
package basic; import java.util.Arrays; public class QuickSort { public static void main(String[] args) { QuickSort quickSort = new QuickSort(); int[] arrays = {2, 5, 3, 4, 6, 1}; quickSort.quickSort(arrays, 0, arrays.length - 1); } public int partition(int[] arrays, int left, int right) { int pivat = arrays[left]; System.out.println("挖第一个数这个坑\t" + pivat); while(left < right) { // 从右往左找比pivat小的数,没找到则跳过 while(left < right && arrays[right] >= pivat) { System.out.println("大,看看我左边"); right--; } // 找到了就把右边的数放到左边去 if(left < right) { System.out.println("小,移位"); arrays[left] = arrays[right]; System.out.println("现在状态\t" + Arrays.toString(arrays)); left++; } // 从左往右找比pivat大的数,没找到则跳过 while(left < right && arrays[left] < pivat) { System.out.println("小,看看我右边"); left++; } // 找到的了就把左边的数放到右边去 if(left < right) { System.out.println("大,移位"); arrays[right] = arrays[left]; System.out.println("现在状态\t" + Arrays.toString(arrays)); right--; } } // 最后剩下的坑位放pivat arrays[left] = pivat; System.err.println("完成\t" + Arrays.toString(arrays)); return left; } public void quickSort(int[] arrays, int left, int right) { if(left < right) { int index = this.partition(arrays, left, right); quickSort(arrays, left, index - 1); quickSort(arrays, index + 1, right); } } }
相关文章推荐
- require笔札
- Handler中的四种更新UI写法
- poj--3061--Subsequence(贪心)
- poj--3061--Subsequence(贪心)
- UESTC 758-P酱的冒险旅途【BFS】
- 今日开讲—— easyui-combobox动态赋值
- LeetCode 51 - N-Queens II
- Ngui 拖拽到底部,直接循环到顶部
- Uva1594 Ducci Sequence
- poj Subsequence 3061 (高效&DP)
- LeetCode 51 - N-Queens
- Android几种在其他线程中更新UI的方法
- UUID 和 GUID 的区别
- UESTC P酱的冒险旅途 785 (规律模拟)
- 利用系统自带的UITabBarController纯代码搭建TabBar
- UESTC 1251-谕神的密码【模拟】
- 内核工作队列workqueue
- UESTC--758--P酱的冒险旅途(模拟)
- Subsequence(暴力+二分)
- 优先队列:priority_queue