快速排序
#include<iostream>
using namespace std;
int func( int arr[], int left, int right)
{
int temp = arr[left];
while (left < right)
{
while ((left < right) && (arr[right] >= temp))
{
right -= 1;
}
arr[left] = arr[right];
while ((left < right) && (arr[left] <= temp))
{
left += 1;
}
arr[right] = arr[left];
}
arr[left] = temp;
return left;
}
void quick_paixu( int arr[], int left,int right)
{
if (left < right)
{
int mid = func(arr, left, right);
quick_paixu(arr, mid + 1, right);
quick_paixu(arr, left, mid - 1);
}
}
int main()
{
int arr[9] = { 1,3,5,9,8,7,6,2,4 };
quick_paixu(arr, 0, 8);
for (int i = 0; i < 9; i++)
{
cout << arr[i] << ",";
}
}
def func(li,left,right):
temp=li[left]
while left<right:
while left<right and li[right]>=temp:
right=right-1
li[left]=li[right]
while left<right and li[left]<=temp:
left=left+1
li[right]=li[left]
li[left]=temp
return left
def quick_paixu(li,left,right):
if left<right:
mid=func(li,left,right)
quick_paixu(li, left, mid - 1)
quick_paixu(li,mid+1,right) //递归
li=[1,3,4,5,9,8,7,6,2]
print(li)
quick_paixu(li,0,len(li)-1)
print(li)