快速排序
算法笔记
算法笔记及自我总结
提示:以下是本篇文章正文内容,下面案例可供参考
一、快速排序
C++版
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
void QuickSort(int* arr, int left, int right)
{
if (left < right)
{
int l = left, r = right, base = arr[l];
while (l < r)
{
while (l < r && arr[r] >= base) r--;
if (l < r) arr[l++] = arr[r];
while (l < r && arr[l] <= base) l++;
if (l < r) arr[r--] = arr[l];
}
arr[l] = base;
QuickSort(arr, left, l - 1);
QuickSort(arr, l + 1, right);
}
}
void Print(int* arr, int n)
{
cout << "排序后:" << endl;
for (int i = 0; i < n; i++)
{
cout << arr[i] << " ";
}
}
int main()
{
int n;
cin >> n;
int arr[] = { 2,3,5,6,0,1,8,9,7,4 };
QuickSort(arr,0,n-1);
Print(arr,n);
system("pause");
return 0;
}
Python版
def QuickSort(List,left,right):
if left < right:
l = left
r = right
base = List[l]
while (l < r):
while (l < r and List[r] > base):
r -= 1
List[l] = List[r]
while (l < r and List[l] <= base):
l += 1
List[r] = List[l]
List[l] = base
QuickSort(List, left, l - 1)
QuickSort(List, l + 1, right)
if __name__=="__main__":
List=[2,3,5,6,0,1,8,9,7,4]
QuickSort(List, 0, len(List) - 1)
print(List)
总结
快速排序其实最主要的就是:先选取基准值,然后通过该基准值在数组中的位置,将序列分成两个区间,让在基准值左边的区间里的数都比基准值小,基准值右边的区间里的数都比基准值大,最后递归调用快速排序的函数重复操作。