zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C语言快速排序算法

2023-06-13 09:11:55 时间
用快速排序法对一组数据由小到大进行排序,数据分别为 99、45、12、36、69、22、62、 796、4、696。

实现过程:

(1)自定义一个函数 qusort(),实现快速排序。

(2) main() 函数为程序的入口函数。程序代码如下:


#include stdio.h 

int qusort(int s[],int start,int end) //自定义函数 qusort()

 int i,j; //定义变量为基本整型

 i=start; //将每组首个元素赋给i

 j = end; //将每组末尾元素赋给j

 s[0]=s[start]; //设置基准值

 while(i j)

 while(i j s[0] s[j])

 j--; //位置左移

 if(i j)

 s[i]=s[j]; //将s[j]放到s[i]的位置上

 i++; //位置右移

 while(i j s[i] =s[0])

 i++; //位置左移

 if(i j)

 s[j]=s[i]; //将大于基准值的s[j]放到s[i]位置

 j--; //位置左移

 s[i]=s[0]; //将基准值放入指定位置

 if (start i)

 qusort(s,start,j-1); //对分割出的部分递归调用qusort()函数

 if (i end)

 qusort(s,j+1,end);

 return 0;

int main()

 int a[11], i; //定义数组及变量为基本整型

 printf( 请输入10个数:/n 

 for(i=1;i i++)

 scanf( %d , a[i]); //从键盘中输入10个要进行排序的数

 qusort(a,1,10); //调用qusort()函数进行排序

 printf( 排序后的顺序是:/n 

 for(i=1;i i++)

 printf( %5d ,a[i]); //输出排好序的数组

 printf( /n 

 return 0;

}
运行结果:

请输入10个数:
99 45 12 36 69 22 62 796 4 696
排序后的顺序是:
  4  12  22  36  45  62  69  99  696  796

技术要点:

快速排序是冒泡排序的一种改进,主要的算法思想是在待排序的 n 个数据中取第一个数据作为基准值,将所有记录分为 3 组,使第一组中各数据值均小于或等于基准值,第二组做基准值的数琚,第三组中各数据值均大于或等于基准值。这便实现了第一趟分割,然后再对第二组和第兰组分别重复上述方法,依次类推,直到每组中只有一个记录为止。

21757.html