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;

}

猜你喜欢

转载自blog.csdn.net/CSDN___Jack/article/details/93618603