package com.larry.sorting;
import java.util.Arrays;
public class QuickSort {
/**
* 一趟排序,将一个元素放在最终位置
* @param s数组的某一部分,初始为整个数组
* @param first待排序的初始元素
* @param end待排序的末尾元素
* @return 该元素的最终位置
*/
private int partition(int s[], int first, int end){
int i = first, j = end;
while(i < j){
while(i < j && s[i] <= s[j]) j--;
if(i < j){
int temp = s[i];
s[i] = s[j];
s[j] = temp;
i++;
}
while(i < j && s[i] <= s[j]) i++;
if(i < j){
int temp = s[i];
s[i] = s[j];
s[j] = temp;
j--;
}
}
return i;
}
/**
* 递归一趟排序,得到最终的顺序(升序排列)
* @param s:整个数组
* @param first待排序的初始位置
* @param end待排序的末尾位置
*/
private void quickSort(int s[], int first, int end){
if(s == null) return;
if(first < 0) return;
if(end >= s.length) return;
if(first < end){
int midPoint = partition(s, first, end);
partition(s, first, midPoint - 1);
partition(s, midPoint + 1, end);
}
}
public static void main(String[] args) {
int s[] = {23, 13, 49, 6, 31, 19, 28};
new QuickSort().quickSort(s, 0, s.length - 1);
System.out.println(Arrays.toString(s));
}
}
交换排序-快速排序
最新推荐文章于 2023-12-01 23:14:38 发布