快速排序(递归)
JarryChen 发布时间:2019-10-24 文章字数:320 预计用时:1分36秒
欢迎来到我的项目页面,这是第一次以这种方式写文章,我的项目主要记录一些关于算法的内容等等。第一篇的话,先来写一下排序里面的快速排序吧O(∩_∩)O。
快速排序过程图
# JavaScript Solution
function quickSort(A, left, right) {
let low = left,
high = right;
if (low > high) return;
let key = A[left];
while (left < right) {
while (left < right && A[right] >= key) right--;
A[left] = A[right];
while (left < right && A[left] <= key) left++;
A[right] = A[left];
}
A[left] = key;
quickSort(A, low, left - 1);
quickSort(A, left + 1, high);
}
data = [1, 0, 2, 9, 3, 8, 4, 7, 5, 6];
quickSort(data, 0, data.length - 1);
# C Solution
typedef int ElemenType;
int partition(ElemenType data[], int left, int right){
ElementType key = data[left];
while( left < right ) {
while(left<right && data[right] >= key)
right--;
data[left] = data[right];
while(left<right && data[left] <= key)
left++;
data[right] = data[left];
}
data[left] = key;
return left;
}
void QuickSort(ElementType data[], int low, int high){
if(low<high){
int index = partition(data,low,high);
QuickSort(data,low,index-1);
QuickSort(data,index+1,high);
}
}
# Java Solution
public void QuickSort(int data[], int low, int high){
int left = low;
int right = high;
if(left > right) return;
int key = data[low];
while(low < high){
while(low < high && data[high] >= key)
high--;
data[low] = data[high];
while(low < high && data[low] <= key)
low++;
data[high] = data[low];
}
data[low] = key;
QuickSort(data, left, low-1);
QuickSort(data, low+1, right);
}
public void Solution(int data[]){
QuickSort(data,0,data.length-1);
for(int i=0;i<data.length;i++){
System.out.print(data[i]);
if(i<data.length-1)
System.out.print(" ");
}
}
int temp[] = {1,0,2,9,3,8,4,7,5,6};
Solution(temp);
# Python Solution
def quickSort(array,low,high):
if low > high:
return
left = low
right = high
key = array[low]
while low < high:
while low < high and array[high] >= key:
high -= 1
array[low] = array[high]
while low < high and array[low] <= key:
low += 1
array[high] = array[low]
array[low] = key
quickSort(array,left,low-1)
quickSort(array,low+1,right)
if __name__ == '__main__':
temp = [1,0,2,9,3,8,4,6,5,7]
print temp
quickSort(temp,0,len(temp)-1)
print temp