package com.springmybatis.test;
public class TestC {
public static void main(String[] args) {
// TODO Auto-generated method stub
int len = 10;
int arr[] = new int[len];
for (int i = 0; i < len; i++) {
// Math.random()表示0~1之间的随机数
arr[i] = (int) (Math.random() * 10000);
System.out.println(arr[i]);
}
Quick_Sort qs = new Quick_Sort();
qs.sort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
}
class Quick_Sort {
public void sort(int arr[]) {
int left = 0;
int right = (arr.length - 1);
this.qkSort(left, right, arr);
}
private void qkSort(int first, int last, int arr[]) {
int temp = arr[first];
int left = first;
int right = last;
while (left < right) {
//从右往左找比temp值小的位置
while (left < right && temp <= arr[right]) {
right--;
}
//从左往右在比temp值大的位置
while (left < right && arr[left] <= temp) {
left++;
}
//如果左右位置还开始位置一样,那么说明这个开始位置的值就是最小值了不做处理,否则就交换前面几下位置的值
if (left != first && left != right) {
int a = arr[left];
arr[left] = arr[right];
arr[right] = a;
}
}
//交换开始位置与左边结束位置的值
arr[first] = arr[left];
arr[left] = temp;
//判断比对位置是否重合了
if (first < last) {
this.qkSort(first + 1, last, arr);
this.qkSort(first, last - 1, arr);
}
}
}
快速排序
最新推荐文章于 2023-12-01 23:14:38 发布