Java
/**
* @author LiuZhiguo
* @date 2019/10/1 16:16
*/
public class QuickSort {
public static void quickSort(int[] arr,int low,int high){
int i,j,temp,t;
if(low>high)
return;
i=low;
j=high;
//temp就是基准位
temp = arr[low];
while (i<j) {
//先看右边,依次往左递减
while (temp<=arr[j]&&i<j) {
j--;
}
//再看左边,依次往右递增
while (temp>=arr[i]&&i<j) {
i++;
}
//如果满足条件则交换
if (i<j) {
t = arr[j];
arr[j] = arr[i];
arr[i] = t;
}
}
//最后将基准为与i和j相等位置的数字交换
arr[low] = arr[i];
arr[i] = temp;
//递归调用左半数组
quickSort(arr, low, j-1);
//递归调用右半数组
quickSort(arr, j+1, high);
}
public static void main(String[] args){
int[] arr = {10,7,2,4,7,62,3,4,2,1,8,9,19};
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
System.out.println();
quickSort(arr, 0, arr.length-1);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
Python
class QuickSort:
def quickSort(self, nums, low, high):
i = low
j = high
if i > j:
return
temp = nums[low] #temp也就是这个序列的第一个数作为枢纽
while i < j:
while temp <= nums[j] and i < j:
j -= 1
if i < j:
nums[i] = nums[j]
i += 1
while nums[i] <= temp and i < j:
i += 1
if i < j:
nums[j] = nums[i]
j -= 1
nums[i] = temp
self.quickSort(nums, low, i-1)
self.quickSort(nums, i+1, high)
if __name__ =='__main__':
test = QuickSort()
nums = [10, 7, 2, 4, 7, 62, 3, 4, 2, 1, 8, 9, 19]
test.quickSort(nums, 0, len(nums)-1)
print(nums)