面试必备-快速排序(Java)
2016-05-24 13:53
232 查看
以s[l]为基准,从右向左比较,找到比它小的就放到s[i]
从左向右比较,找到比它大的就放到s[j],
当i==j时,退出循环,s[i]=x
时间复杂度是nlogn
public class quickSort {
static void quickSortM(int[] s, int l, int r){
if (l < r){
int x = s[l];
int i = l,j = r;
while (i < j){
while (i < j && s[j] >= x){
j--;
}
if (i<j)
s[i++] = s[j];
while (i <j && s[i] < x){
i++;
}
if (i<j){
s[j--] = s[i];
}
}
s[i] = x;
quickSortM(s,l,i-1);
quickSortM(s,i+1,r);
}
}
public static void main(String[] args){
int s[] = {72,92,3,88,43,100,56};
quickSortM(s,0,s.length-1);
int j;
for (j=0;j<s.length;j++)
System.out.println(s[j]);
}
}
从左向右比较,找到比它大的就放到s[j],
当i==j时,退出循环,s[i]=x
时间复杂度是nlogn
public class quickSort {
static void quickSortM(int[] s, int l, int r){
if (l < r){
int x = s[l];
int i = l,j = r;
while (i < j){
while (i < j && s[j] >= x){
j--;
}
if (i<j)
s[i++] = s[j];
while (i <j && s[i] < x){
i++;
}
if (i<j){
s[j--] = s[i];
}
}
s[i] = x;
quickSortM(s,l,i-1);
quickSortM(s,i+1,r);
}
}
public static void main(String[] args){
int s[] = {72,92,3,88,43,100,56};
quickSortM(s,0,s.length-1);
int j;
for (j=0;j<s.length;j++)
System.out.println(s[j]);
}
}
相关文章推荐
- 快速排序
- C#快速排序算法实例分析
- C++快速排序的分析与优化详解
- js实现数组冒泡排序、快速排序原理
- php简单实现快速排序的方法
- Java 快速排序(QuickSort)原理及实现代码
- 快速排序和分治排序介绍
- java 算法之快速排序实现代码
- Java实现快速排序算法(Quicktsort)
- Java中的数组排序方式(快速排序、冒泡排序、选择排序)
- 快速排序的原理及java代码实现
- C/C++实现快速排序的方法
- c语言实现冒泡排序、希尔排序等多种算法示例
- 深入单链表的快速排序详解
- C++实现八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序等
- JavaScript实现快速排序的方法
- C#使用委托实现的快速排序算法实例
- C语言的冒泡排序和快速排序算法使用实例
- javascript与Python快速排序实例对比
- php实现快速排序的三种方法分享