快速排序的算法(c语言实现)

我会带着你远行 2023-02-13 03:54 72阅读 0赞

下面是我们华信王老师讲的快排算法

用的头文件和任意数据类型

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. typedef int elemtype;

//快排的核心算法

  1. int partation(elemtype arr[],int i,int j)
  2. {
  3. elemtype temp = arr[i];//temp是枢轴,即分界线
  4. while(i < j){
  5. while(j > i && arr[j] > temp){
  6. j --;
  7. }
  8. arr[i] = arr[j];
  9. while(j > i && arr[i] < temp){
  10. i ++;
  11. }
  12. arr[j] = arr[i];
  13. }
  14. arr[i] = temp;
  15. return i;
  16. }

//递归实现完整排序

  1. void QuickSort(elemtype arr[],int i,int j)
  2. { //i表示数组的第一个元素下表,j表示最后一个元素下标
  3. int k;//接收partation()的返回值
  4. if(i < j){
  5. k = partation(arr,i,j);
  6. QuickSort(arr,i,k - 1);
  7. QuickSort(arr,k + 1,j);
  8. }
  9. }

//完整代码

  1. typedef int elemtype;
  2. //快速排序的核心代码
  3. int partation(elemtype arr[],int i,int j)
  4. {
  5. elemtype temp = arr[i];
  6. while(i < j){
  7. while(j > i && arr[j] > temp){
  8. j --;
  9. }
  10. arr[i] = arr[j];
  11. while(j > i && arr[i] < temp){
  12. i ++;
  13. }
  14. arr[j] = arr[i];
  15. }
  16. arr[i] = temp;
  17. return i;
  18. }
  19. //递归实现
  20. void QuickSort(elemtype arr[],int i,int j)
  21. {
  22. int k;
  23. if(i < j){
  24. k = partation(arr,i,j);
  25. QuickSort(arr,i,k - 1);
  26. QuickSort(arr,k + 1,j);
  27. }
  28. }
  29. int main()
  30. {
  31. int num,i,k;
  32. printf("请输入您总数据的个数:");
  33. scanf("%d",&num);
  34. elemtype arr[num];
  35. printf("请输入数据:");
  36. for(i = 0;i < num;i ++){
  37. scanf("%d",&arr[i]);
  38. }
  39. printf("数据输入成功!您可\n输入1:查看排序后内容\n输入2:查看未排序内容\n输入0:退出!\n");
  40. while(1){
  41. printf("\n请输入:");
  42. scanf("%d",&k);
  43. switch(k){
  44. case 1:
  45. {
  46. QuickSort(arr,0,num - 1);
  47. for(i = 0;i < num;i ++){
  48. printf("%d ",arr[i]);
  49. }
  50. break;
  51. }
  52. case 2:
  53. {
  54. for(i = 0;i < num;i ++){
  55. printf("%d ",arr[i]);
  56. }
  57. break;
  58. }
  59. case 0:
  60. return;
  61. }
  62. }
  63. }

调试结果
在这里插入图片描述
大家有不明白的地方可以下面评论或者私聊我哦,
对您有帮助的话点个赞再走叭

发表评论

表情:
评论列表 (有 0 条评论,72人围观)

还没有评论,来说两句吧...

相关阅读

    相关 快速排序算法C语言实现

    快速排序算法(C语言实现) 快速排序是一种基于比较的排序算法,它采用递归分治策略来排序一个序列。快速排序算法是所有基于比较的排序算法中,平均情况下表现最好的一种算法。快速排序

    相关 快速排序C语言实现

    快速排序是一种常用且高效的排序算法,它基于分治策略,通过将数组分成较小的子数组并对它们进行排序,最终将它们合并以得到排序后的数组。下面我们将介绍如何使用C语言实现快速排序,并附