有些东西再不贴出来,以后可能再也找不到了。陆续整理曾写过的排序算法。

快速排序是对冒泡排序的一种改进。它的基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要小,然后再按次方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

原理不多做介绍了,有需要可以看看这里:

http://www.hiahia.org/datastructure/paixu/paixu8.3.2.1-1.htm

上代码:

const int NUM=20;
int arr[] = {1,10,11,5,6,15,0,15,16,14,0,8,17,15,7,19,17,1,18,7};
/* swap函数:交换v[k]与v[j]的值 */
inline void swap(int v[], int k, int j)
{
int temp;
temp = v[k];
v[k] = v[j];
v[j] = temp;
}
void qsort(int v[], int left, int right)
{
int j, left_c,right_c,sigh;
left_c=left;              //当前一趟快排的最左序号
right_c=right;            //当前一趟快排的最右序号
sigh=0;               //0表示从左边开始排
while(left_c!=right_c)
{
if(v[left_c]<v[right_c])                  //搜索可以交换的位置
{
if(sigh==0)
--right_c;
else
++left_c;
continue;
}
if(sigh==0)                         //小头有空,交换
{
swap(v,left_c++,right_c);
sigh=1;
}
else                              //大头有空,交换
{
swap(v,left_c,right_c--);
sigh=0;
}
}
for(j=0;j<NUM;++j)
cout<<v[j]<<" ";
cout<<endl;
/*一次快排结束,小头和大头继续搜索*/
if(left<left_c-1)
qsort(v, left, left_c-1);
if(right>right_c+1)
qsort(v, right_c+1, right);
}
void main()
{
int j;
qsort(arr, 0, NUM-1);
for(j=0; j<NUM; j++)
printf("%d ", arr[j]);
printf("/n");
}

排序——快速排序(QuickSort)相关推荐

  1. 快速排序(quicksort)算法实现

     快速排序(quicksort)是分治法的典型例子,它的主要思想是将一个待排序的数组以数组的某一个元素X为轴,使这个轴的左侧元素都比X大,而右侧元素都比X小(从大到小排序).然后以这个X在变换后数组的 ...

  2. 快速排序(quickSort) 和 插入排序(insertSort)

    1.快速排序(quickSort) (1)在数据集之中,选择一个元素作为"基准"(pivot). (2)所有小于"基准"的元素,都移到"基准" ...

  3. quicksort java_Java代码实现快速排序(QuickSort)

    Java代码实现快速排序(QuickSort) 核心思想 如果要排序数组中下标从p到r之间的一组数据,我们选择p到r之间的任意一个数据为pivot(分区点). 我们遍历p到r之间的数据,将小于pivo ...

  4. DS排序--快速排序

    题目 问题 C: DS排序--快速排序 时间限制: 1 Sec 内存限制: 128 MB 提交: 480 解决: 303 [提交][状态][讨论版] 题目描述 给出一个数据序列,使用快速排序算法进行从 ...

  5. 【啊哈!算法】算法3:最常用的排序——快速排序

    [啊哈!算法]算法3:最常用的排序--快速排序        上一节的冒泡排序可以说是我们学习第一个真正的排序算法,并且解决了桶排序浪费空间的问题,但在算法的执行效率上却牺牲了很多,它的时间复杂度达到 ...

  6. 最常用的排序---快速排序法

    最常用的排序-快速排序法 桶排序浪费空间,冒泡排序虽然解决了空间问题却在算法的执行效率上牺牲了很多,因此我们的快速排序法就诞生了,是不是听这个名字就很高档呢? 假设现在需要对"6,1,2,7 ...

  7. 排序-交换类排序--快速排序简介

    交换类排序有冒泡和快排 冒泡排序相对简单,之前总结过: https://blog.csdn.net/u011109881/article/details/80038573 快速排序 参考: 数据结构( ...

  8. 排序1+3:基数排序(RadixSort),希尔排序(ShellSort)和快速排序(QuickSort)

    1 基数排序 基数排序对于整数特别有效.是一种稳定的算法(意思是相同的数字不会交换关系).基数排序是根据数字的性质来逐步根据个位数,十位数,百位数分类求得排序结果的方法之一.它的想法如下: (1)先将 ...

  9. 排序算法--快速排序(QuickSort)、 3区快速排序(3 Way QuickSort)原理、适用场景及代码示例

    快速排序 概念介绍 QuickSort快速和归并排序一样,是采用分治法解决问题的一个典型应用.它选择一个元素作为基准元素,并围绕选定的基准元素对给定数组进行分区. quickSort有很多不同的版本, ...

  10. 快速排序quicksort算法细节优化(一次申请内存/无额外内存排序)

    文章目录 1.只申请一次内存,避免多次递归调用时反复的申请和释放内存,提高程序运行效率 2.不申请内存,在原数组上直接排序 优化比较总结 对链接中快速排序进行代码优化 https://blog.csd ...

最新文章

  1. SpringMVC处理MYSQL BLOB字段的上传
  2. 数据库修复Part1:创建自己的测试corrupt数据库
  3. mqtt服务器性能H3,运用 MQTT-JMeter 插件测试 MQTT 服务器性能
  4. js操作改变原数组的解决方法
  5. Cloud Native 介绍
  6. java jquery post_jquery js post变量set和get for post
  7. redis发布订阅c接口_Redis 发布/订阅机制原理分析
  8. HTML系列(四):编辑图像
  9. Swift语法专题五——集合类型
  10. 跟我学MVC系列(Repository模式、LINQ、EF、IOC框架Castle、JQuery、AJAX)(六)(应用IOC模式)...
  11. c 语言表达式求值中缀变后缀,表达式求值关于中缀式转后缀式的问题!
  12. webstorm如何自定义代码模板
  13. vs2015安装qt5教程
  14. 漫威电影(复仇者联盟)系列观看顺序和资源下载地址
  15. 明尼苏达大学双城分校计算机科学,明尼苏达大学双城分校计算机专业研究生需要满足哪些条件?...
  16. 移动 App 背后的一站式存储解决方案实践
  17. 微信小程序-输入框输入文字后,将光标移到文字中间,接着输入文字后光标又自动跳到最后...
  18. 2020 Python中文社区热门文章 Top 10
  19. java在线api中文_JAVA中英文API(在线版)
  20. 企企通持续助力全球管道预制先行者「迈科管道」,二期项目逐步启动

热门文章

  1. 浪潮国产芯片服务器,国产AI 芯片鲲云CAISA完成浪潮AI服务器认证测试
  2. 开车好用的蓝牙耳机有哪些?商务通话蓝牙耳机推荐
  3. java调整字体_用java修改字体样式
  4. 若依POI导入Excel多种日期格式转换为一种
  5. 机器人“攻占”北京亦庄 华为Wi-Fi网络保驾护航
  6. 通过邮箱监控gpu温度
  7. Android Studio——android中handler用法总结
  8. pyecharts地理坐标系只显示南海诸岛问题
  9. ChatGPT 对企业意味着什么?
  10. 2019-7-26 [MySQL] 安装与介绍 语句分类/语法 数据类型 DDL数据定义:创建/查看/删除/使用 DML数据操作:增删改 主键约束 自动增长列 非空约束 默认值 Navicat