快速排序(未)
来源:互联网 发布:北京培训seo哪个好 编辑:程序博客网 时间:2024/05/19 05:04
public void quick(int [] a){
if(a.length>0){
quickSort(a,0,a.length-1);
}
}
/**
* 快速排序
* @param a
* @param i
* @param j
*/
private void quickSort(int[] a, int low, int high) {
if(low<high){
int middle = getMiddle(a,low,high);
quickSort(a, 0, middle-1);
quickSort(a,middle+1,high);
}
}
/**
* 获取中间下标
* @param a
* @param low
* @param high
* @return
*/
private int getMiddle(int[] a, int low, int high) {
int temp = a[low];//基准元素
while(low<high){
while(low<high&&a[high]>=temp){
high--;
}
a[low] = a[high];
while(low<high&&a[low]<=temp){
low++;
}
a[high] = a[low];
}
a[low] = temp;//插入到排序后正确的位置
return low;
}
if(a.length>0){
quickSort(a,0,a.length-1);
}
}
/**
* 快速排序
* @param a
* @param i
* @param j
*/
private void quickSort(int[] a, int low, int high) {
if(low<high){
int middle = getMiddle(a,low,high);
quickSort(a, 0, middle-1);
quickSort(a,middle+1,high);
}
}
/**
* 获取中间下标
* @param a
* @param low
* @param high
* @return
*/
private int getMiddle(int[] a, int low, int high) {
int temp = a[low];//基准元素
while(low<high){
while(low<high&&a[high]>=temp){
high--;
}
a[low] = a[high];
while(low<high&&a[low]<=temp){
low++;
}
a[high] = a[low];
}
a[low] = temp;//插入到排序后正确的位置
return low;
}
0 0
- 快速排序(未)
- 快速排序代码复用的方法(未实践)
- java快速排序-原始未优化
- 堆排序(未)
- 增量排序(未)
- 合并排序(未)
- 堆排序(未完结)
- 排序总结(快速排序)
- 排序(之快速排序)
- 快速排序(java排序)
- wikioi1076 排序(快速排序)
- 排序(5)快速排序
- c++排序(快速排序)
- 排序(二)快速排序
- 排序(3)--快速排序
- 排序(2)快速排序
- 排序(4)快速排序
- 快速排序-(交换排序)
- 获取sh shell 当前文件的绝对路径
- Mac下粗略实现ls命令
- 【前端笔试题】给定数字N,求从1到N中间0出现的次数
- Bootstrap框架快速上手攻略
- 2.DP数字三角形
- 快速排序(未)
- oracle检索出存在指定字段的所有表
- FP-Growth算法介绍
- jmeter JDBC运行报错Table 'performance_schema.session_variables' doesn't exist
- 布隆过滤器及Java实现
- cpp中使用sizeof和计算类占用空间的大小
- awk指定分割符
- FileDialog::getOpenFileName()函数用法及FindDialog::FindDialog(QWidget *parent) :QDialog(parent)
- HDU 1532 Drainage Ditches(网络流水题【Edmond-Karp算法】)