【算法总结系列-1】快速排序-c语言实现

来源:互联网 发布:qq酷双项淘宝客 编辑:程序博客网 时间:2024/06/05 02:47

最近终于顿悟算法对编程的非凡意义,现计划写一系列的文章来总结下常用且比较重要的算法。

现在第一个要小结的就是  快速排序

#include <stdio.h>int a[101],n;//定义全局变量,这两个变量需要在子函数中使用void quicksort(int left,int right)   //快速排序算法{  int i,j,t,temp;          if(left > right)  return;    temp = a[left];   //temp中存的就是基准数  i = left;  j = right;  while(i != j)  {   //顺序很重要,先从右边开始往左边找  while(a[j] >= temp && i<j)  j--;  //再从左往右边找  while(a[i] <= temp && i<j)  i++;  //交换两个数在数组中的位置  if(i<j)    //当哨兵i j 没有相遇时  {        t = a[i];a[i] =a[j];a[j] =t;  }  }  a[left] = a[i];  a[i] = temp;  quicksort(left,i-1);//继续处理左边的  quicksort(i+1,right);//继续处理右边的  return;}int main(){  int i,j;  //读入数据  scanf("%d",&n);      //n就是待排序的个数  for(i =1 ;i<=n;i++)  scanf("%d",&a[i]);  quicksort(1,n);//快速排序调用  //输出排序结果  for(i=1;i<=n;i++)  printf("%d",a[i]);  getchar();getchar();//用了暂停程序,便于查看程序输出的结果,也可以用system("pause")替代  return 0;}




4 3
原创粉丝点击