当前位置: 首页 > news >正文

排序算法【快速排序】

一、快速排序算法原理

        直接采用实际的例子解释原理,实际的数组如下图所示。

           排序算法流程如下所示

        然后按照上面顺序递归下去,直到排序完成推出。

二、算法代码

#include <stdio.h>
#include "test.h"/* 快速排序算法 */
void quick_sort(int* arr, int begin, int len)
{int data;//如果数组只有两个元素,就没必要递归if ((len - begin) <= 2){if ((len - begin) <= 1)return;if (arr[begin] > arr[begin + 1]){data = arr[begin];arr[begin] = arr[begin + 1];arr[begin + 1] = data;}}//选定基准值,数组中数据划分到基准值两边int x = begin, y = len - 1, z = arr[begin];while (x < y){while ((x < y) && (arr[y] >= z)) y--;if(x < y) arr[x++] = arr[y];while ((x < y) && (arr[x] <= z)) x++;if (x < y) arr[y--] = arr[x];}arr[x] = z;quick_sort(arr, begin, x);    //这里注意选定的基准值的排序位置是对的。quick_sort(arr, x+1, len);
}void main()
{int* arr = CreateArray(10000);//TEST_MY(selection_sort, arr, 10000);TEST_MY(quick_sort, arr, 10000);/*unguarded_insert_sort(arr, 0, 10000, 1);*///printf("data:%d, %d, %d, %d\r\n", arr[0], arr[1], arr[2], arr[3]);free(arr);return;
}

运行结果如下所示:


http://www.mrgr.cn/news/7261.html

相关文章:

  • jQuery实现前端下载功能
  • 医疗器械网络安全
  • 手机号归属地查询如何用Java进行调用
  • 从0到1学会nginx分布式框架
  • SpringBoot 读取配置文件的4种方式
  • C++ 设计模式——命令模式
  • JAVA中的Stream流的使用详解
  • pyinstaller pyqt5 pytest打包后报错no module unittest.mock
  • 【鸿蒙 HarmonyOS NEXT】引入第三方js:dayjs
  • 谷粒商城实战笔记-240~243-商城业务-购物车-页面环境搭建
  • 筛法求欧拉函数
  • 设计模式-状态模式
  • SFF806A-ASEMI无人机专用SFF806A
  • 14:00面试,14:06就出来了,问的问题有点变态。。。
  • getchar(),putchar(),EOF的详细解释
  • Gameplay Ability System(事件通知)
  • ArkTS---HAR
  • DAY52
  • 货车制造5G智能工厂工业物联数字孪生平台,推进制造业数字化转型
  • 设计模式-1 概念 创建型模式