快速排序代码实现
2014-05-31 20:42
211 查看
public static int getFristIndex(int[] arr,int frist,int end) { int i = frist; int j = end; while(i<j) { while(i<j && arr[i]<=arr[j])j--; if(i<j) { int temp= arr[i]; arr[i] = arr[j]; arr[j] = temp; i++; } while(i<j && arr[i]<=arr[j])i++; if(i<j) { int temp= arr[i]; arr[i] = arr[j]; arr[j] = temp; j--; } } return i; } public static int[] quickSort(int[] arr,int first,int end) { if(first<end) { int middle = getFristIndex(arr, first, end); quickSort(arr, first, middle-1); quickSort(arr, middle+1, end); } return arr; }一般分如下步骤:
1)选择一个枢纽元素(有很对选法,我的实现里采用去中间元素的简单方法)
2)使用该枢纽元素分割数组,使得比该元素小的元素在它的左边,比它大的在右边。并把枢纽元素放在合适的位置。
3)根据枢纽元素最后确定的位置,把数组分成三部分,左边的,右边的,枢纽元素自己,对左边的,右边的分别递归调用快速排序算法即可。
快速排序的核心在于分割算法,也可以说是最有技巧的部分。
相关文章推荐
- 【数据结构与算法】【排序】快速排序的代码实现
- 快速排序-常见中轴(主元pivot)选择方法及实现代码(末位/随机/三数中值/..)
- 快速排序实现代码
- 算法代码实现之三向切分快速排序,Java实现
- 算法代码实现之快速排序,Java实现
- 交换排序——冒泡排序和快速排序,C++代码实现
- Java 快速排序 代码实现
- 快速排序的原理及java代码实现
- 快速排序代码实现
- 算法代码实现之三向切分快速排序,Golang(Go语言)实现
- 快速排序的非递归实现代码
- 简单的C语言快速排序实现代码
- Ruby一行代码实现快速排序
- Python实现冒泡排序、选择排序、插入排序、快速排序、归并排序、二分法查找算法(基于《算法导论》伪代码)
- JAVA排序算法实现代码-快速(Quick Sort)排序
- JS实现随机化快速排序的实例代码
- 快速排序的C语言代码实现
- 快速排序--Java实现代码
- 算法代码实现之快速排序,C/C++实现
- 算法代码实现之快速排序,Golang(Go语言)实现