快速排序

来源:互联网 发布:网络监控画面时有时无 编辑:程序博客网 时间:2024/06/05 19:05

快速排序法是一种经常提及,被很多公司喜欢用来考察的排序方法,它的平均时间复杂度为O(nlongn),最差时间复杂度为O(n*n)。

/* Note:Your choice is C IDE */#include "stdio.h"void quick_sort(int a[],int n);//函数的声明后要加分号int main(){int i;int a[10];printf("please input 10 datas:\n");for(i=0;i<10;i++)scanf("%d",&a[i]);quick_sort(a,10);printf("10 datas after sort:\n");for(i=0;i<10;i++)printf("a[%d]=%d\n",i,a[i]);return 0;}void quick_sort(int a[],int n){int temp;int i=0;int j=n-1;if(n==1)//递归结束的条件 return ;else{while(i<j) { while(a[j]>a[i])//从右向左遍历排序  j--;  if(i<j)  {  temp=a[i];  a[i]=a[j];  a[j]=temp;  i++;  }  while(a[j]>a[i])//从左向右遍历排序  i++;  if(i<j)  {   temp=a[i];  a[i]=a[j];  a[j]=temp;  j--;  } }//此时i==j,标杆元素左边都是比其小的数,右边全是比它大的数.第一步完成quick_sort(a,i);//第二步,对标杆元素左边的数列使用快速排序quick_sort(a+i+1,n-i-1);//第三步,对标杆元素右边的数列使用快速排序}}


原创粉丝点击