c语言快速排序算法(快速排序算法代码c语言)
快速排序是一种不稳定排序,它的时间复杂度为O(n·lgn),最坏情况为O(n2);空间复杂度为O(n·lgn)。
这种排序方式是对于冒泡排序的一种改进,它采用分治模式,将一趟排序的数据分割成独立的两部分,其中一组数据的每个值都小于另一组。每一趟在进行分类的同时实现排序。
其中每一趟的模式通过设置key当基准元素,key的选择可以是数据的第一个,也可以是数据的最后一个。这里以每次选取数据的第一个为例:
另外,关于C/C++编程学习,小编给大家提供一个学习.交.流群,欢迎到访:569268376
具体代码实现:
#include<stdio.h>
#define N 6
int fun(int arr[],int low,int high)
{
int key;
key=arr[low];
while(low<high)
{
while(low<high && arr[high]>=key)
high–;
if(low<high)
arr[low++]=arr[high];
while(low<high && arr[low]<=key)
low++;
if(low<high)
arr[high–]=arr[low];
}
arr[low]=key;
return low;
}
void quick_sort(int arr[],int start,int end)
{
int pos;
if(start<end)
{
pos=fun(arr,start,end);
quick_sort(arr,start,pos-1);
quick_sort(arr,pos+1,end);
}
}
int main()
{
int i;
int arr[N]={32,12,7,78,23,45};
for(i=0;i<N;i++)
{
printf(“%d “,arr[i]);
}
printf(“n”);
quick_sort(arr,0,N-1);
for(i=0;i<N;i++)
{
printf(“%d “,arr[i]);
}
return 0;
}
原创文章,作者:admin,如若转载,请注明出处:https://www.qq65hfghe5.com/tg/103192.html