排序算法之快速排序(O (NlogN))
来源:互联网 发布:守望先锋查看队友数据 编辑:程序博客网 时间:2024/05/09 14:52
基本思想:每次将一个数temp作为基准,
然后从最右边往左找到一个比temp小的数,
然后再从左往右找到一个比temp大的数,
此时如果俩数没有相遇,就交换,若相遇,
就将相遇位置的数跟基准交换,然后采用二分法,分别递归左半边跟右半边
//快速排序
public class Algorithm{static int []arr={1,3,2,5,7,3,8};
public static void main(String[] args) {
quickSort(0,arr.length-1);
for(int i:arr)
System.out.println(i);
}
private static void quickSort(int left, int right) {
if(left>right)
return ;
int temp=arr[left];//temp作为基准
int i=left;
int j=right;
while(i!=j){
//从右向左比较,找出比temp小的数
while(arr[j]>=temp&&i<j)
j--;
//从左往右找,找出比temp大的数
while(arr[i]<=temp&&i<j)
i++;
//左右各自找完之后,进行交换
if(i<j){
int t=arr[i];
arr[i]=arr[j];
arr[j]=t;
}
}
//让基数进行归位
arr[left]=arr[i];
arr[i]=temp;
quickSort(left,i-1);
quickSort(i+1,right);
}
}
1 0
- 排序算法之快速排序(O (NlogN))
- 快速排序(O(nlogn))
- 数据结构之排序算法之O(nlogn)
- 快速排序(分治法O(nlogn))
- O(nlogn)排序算法--QuickRank
- 改进版快速排序(平均复杂度O(NlogN))
- 快速排序[平均时间复杂度O(NlogN)]
- nlogn级别的排序算法(2)快速排序
- Java-时间复杂度为O(nlogn)的排序算法(快速排序, 归并排序, 堆排序, 希尔排序)
- 关于快速排序和插入排序最坏时间复杂度为O(nlogn)的算法
- nlogn排序-快速排序
- 快速排序算法的时间复杂度为什么是O(NlogN),还有O(N^2)
- 希尔排序(O(nlogn)-O(n2))
- 排序 O(nlogn)
- 【项目3 - 体验复杂度之二 复杂度为O(nlogn) 的快速排序quicksort】
- 编程珠矶学习笔记(12)- 快速排序法1 O(nlogn)
- leetcode链表O(nlogn)排序
- 排序算法-nlogn级别
- robotframe使用之滚动条
- log4j不同级别日志完全分开打印
- java 正则式
- Android之touch事件分发的小结
- 让iframe自适应高度 兼容多种浏览器随着窗口大小改变
- 排序算法之快速排序(O (NlogN))
- elasticsearch ik分词实现 中文、拼音、同义词搜索
- hadoop学习4--MapReduce及官方WorldCount分析
- 解决Android Studio卡顿的问题
- 【VS/Cplex】VS2015配置CPLEX_Studio127
- iOS 颜色照片
- jQuery 知识点总结(更新中)
- Android 7.0新特性译文
- java中method的setAccessible方法