首页 > 其他分享 >快速排序

快速排序

时间:2024-10-02 15:00:16浏览次数:9  
标签:sort int swap quick 排序 快速 对应

取数组中任意一个数,用两个指针i,j(i在j左侧)分别从左右边界向中间逼近,
当i>=x时,i停止移动,j开始逼近
当i>=x并且j<=x时,交换两个指针所指的数的数值,开启下一轮迭代
直到i与j分别越过中间数(i在j右侧)
开启下一轮快速排序(递归quick_sort分割数组寻找不同的x)
最后使得数组排序完毕
·注意数组下标是否越界

void quick_sort(int u[], int l, int r) {
if (l >= r) return;
int x = u[l], i = l - 1 , j = r + 1;//u[l]对应下面j,防止越界
while (i<j)
{
do i++; while (u[i] < x);
do j--; while (u[j] > x);
if (i < j) swap(&u[i],&u[j]);
}
quick_sort(u, l, j);//j对应u[l],
quick_sort(u, j + 1, r);//j+1对应u[l],
}
//快速排序,l为开头序号,r为结尾序号
//u[r]对应i-1和i,或是u[(l+r-1)/2]对应j和j+1,u[(l+r+1)/2]对应i-1和i

//swap交换两数
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}

标签:sort,int,swap,quick,排序,快速,对应
From: https://www.cnblogs.com/dianman/p/18444759

相关文章

  • 53_初识搜素引擎_上机动手实战如何定制搜索结果的排序规则
    1、默认排序规则默认情况下,是按照_score降序排序的然而,某些情况下,可能没有有用的_score,比如说filterGET/_search{"query":{"bool":{"filter":{"term":{"author_id":1}}}}}当然,也可以是constant_scoreGET/_search{"query"......
  • 54_初识搜索引擎_解密如何将一个field索引两次来解决字符串排序问题
    如果对一个stringfield进行排序,结果往往不准确,因为分词后是多个单词,再排序就不是我们想要的结果了通常解决方案是,将一个stringfield建立两次索引,一个分词,用来进行搜索;一个不分词,用来进行排序PUT/website{"mappings":{"article":{"properties":{"title":{"type":"t......
  • 62_索引管理_快速上机动手实战修改分词器以及定制自己的分词器
    1、默认的分词器standardstandardtokenizer:以单词边界进行切分standardtokenfilter:什么都不做lowercasetokenfilter:将所有字母转换为小写stoptokenfiler(默认被禁用):移除停用词,比如atheit等等2、修改分词器的设置启用english停用词tokenfilterPUT/my_index{"se......
  • 61_索引管理_快速上机动手实战创建、修改以及删除索引
    1、为什么我们要手动创建索引?2、创建索引创建索引的语法PUT/my_index{"settings":{...anysettings...},"mappings":{"type_one":{...anymappings...},"type_two":{...anymappings...},...}}创建索引的示例PUT/my_index{"se......
  • vite 快速入门指南
    相关链接演示地址源码地址vite官网地址Vite是什么Vite是由EvanYou(Vue.js创始人)开发的现代前端构建工具,专为提升开发体验而设计。它通过创新的开发模式和高效的构建流程,极大提高了开发效率,尤其在处理大型项目和复杂的前端框架时,表现出色。Vite的核心特点包括:......
  • pbootcms列表页排序切换(时间/浏览量/推荐…)
    为了让PBootCMS列表页支持多种排序方式,并且在点击按钮时能够切换排序方式,可以通过给URL添加参数并在前端标签中进行判断来实现。以下是详细的实现步骤和代码示例。实现步骤添加按钮中的URL参数在列表调用标签中处理排序参数整合代码详细步骤1.添加按钮中的URL参数在按钮......
  • HTML5-快速标记参考-全-
    HTML5快速标记参考(全)原文:HTML5QuickMarkupReference协议:CCBY-NC-SA4.0一、HTML5历史:HTML标记的过去和未来让我们从看一下标记语言的历史开始,其中HTML——现在在其第五个修订版中,称为HTML5——是最流行和使用最广泛的。今年(2016年)预示着HTML5的另一个版本HT......
  • JavaScript-快速语法参考-全-
    JavaScript快速语法参考(全)原文:JavaScriptQuickSyntaxReference协议:CCBY-NC-SA4.0一、使用JavaScript要开始试验JavaScript,您应该安装一个支持这种语言的集成开发环境(IDE)。有很多不错的选择,比如NetBeans、Eclipse、VisualStudio、括号。在本书中,我们将使用NetBe......
  • 37_初识搜索引擎_快速掌握query string search语法以及_all metadata原理揭秘
    1、querystring基础语法GET/test_index/test_type/_search?q=test_field:testGET/test_index/test_type/_search?q=+test_field:testGET/test_index/test_type/_search?q=-test_field:test一个是掌握q=field:searchcontent的语法,还有一个是掌握+和-的含义2、_allmetada......
  • 快速排序算法及多线程试验
    1)快速排序算法算法实现:选定一个起点/终点位置上的数A小于数A的放在A左侧,大于的放在右侧对A左侧和右侧数组递归的执行步骤2//分区函数template<typenameT>intpartition(Tarr[],intlength){ if(length<=1) return1; inti=1; intj=length-1; //se......