目录
一、简介
中文名:快速排序
英文名:quick sort
时间复杂度:O(nlog2n)
稳定性:不稳定性的排序算法(多个相同的值的相对位置在也许会在算法结束后位置发生改变)
原理:将数组的第一个(最后一个)数组元素a,作为关键数据,将比a小的数字b放到a的左边(右边),所有比a小的数字b放到a的右边(左边),快速排序是对冒泡排序的的优化。
二、代码部分
int main()
{
int arr[10] = {9,5,3,8,1,2,6,7,4,10};
void quicksort(int a[10],int i,int j); //函数的声明
printf("排列前:");
for(int i = 0; i < 10;i++)
{
printf("%d ",arr[i]);
}
printf("\n");
quicksort(arr,0,9); //调用函数
printf("排列后:");
for(int i = 0; i < 10;i++)
{
printf("%d ",arr[i]);
}
system("pause");
return 0;
}
void quicksort(int a[10],int first,int end)
{
if(first > end) //递归结束条件
{
return;
}
int i = first,j = end,flag = a[i],exchange = 0;
while(i != j)
{
while(i < j && a[j] > flag)
{
j--;
}
while(i < j && a[i] <= flag)
{
i++;
}
if(j >