排序总结

排序总结

快速排序基本思路:
基本思想:
1)选择一个基准元素,通常选择第一个元素或者最后一个元素,
2)通过一趟排序讲待排序的记录分割成独立的两部分,其中一部分记录的元素值均比基准元素值小。另一部分记录的 元素值比基准值大。
        首先从后往前寻找比基准元素小的值 移动
        然后从前往后寻找比基准元素大的值 移动
        循环 直到i==j
3)此时基准元素在其排好序后的正确位置
4)然后分别对这两部分记录用同样的方法继续进行排序,直到整个序列有序。
快速排序图解
在这里插入图片描述

void quickSort(int a[],int low,int high) {int i, j, pivot;if (low < high) {pivot = a[low];i = low;j = high;while (i < j) {while (i < j && a[j] >= pivot) //从右往左找一个小于基准值数j--;if (i < j)a[i++] = a[j];while (i < j && a[i] <= pivot) //从左往右找一个大于基准值的数i++;if (i < j)a[j--] = a[i];}a[i] = pivot;quickSort(a, low, i - 1);quickSort(a, i + 1, high);}
}

排序的全过程:
在这里插入图片描述
2、归并排序图解在这里插入图片描述

//合并算法
void merge(int arr[], int start, int end, int mid, int *temp) {int i_start = start;int i_end = mid;int j_start = mid + 1;int j_end = end;int length = 0;  //表示辅助空间有多少个元素while (i_start <= i_end && j_start <= j_end) {if (arr[i_start] < arr[j_start])temp[length++] = arr[i_start++];elsetemp[length++] = arr[j_start++];}while (i_start <= i_end)temp[length++] = arr[i_start++];while (j_start <= j_end)  //必须加等于temp[length++] = arr[j_start++];for (int i = 0; i < length; i++)将排好序的存回arr中start到end这区间{arr[start + i] = temp[i];}
}
void mergeSort(int arr[], int start, int end, int *temp) {if (start >= end)return;int mid = (start + end) / 2;mergeSort(arr, start, mid, temp);mergeSort(arr, mid + 1, end, temp);//合并merge(arr, start, end, mid, temp);
}
void testMergeSort() {int arr[] = { 3,5,9,6,1,8,0,4,2 };int length = sizeof(arr) / sizeof(int);int* temp = (int *)malloc(sizeof(int)*length);mergeSort(arr, 0, length - 1, temp);printArray(arr,length);
}

3、插入排序图解
在这里插入图片描述

void insertSort() {int a[] = { 3,5,9,6,1,8,0,4,2 };int length = sizeof(a) / sizeof(a[0]);int j;for (int i = 1; i <length; i++){int temp = a[i];for (j = i - 1; j >= 0 && temp<a[j]; j--){a[j + 1] = a[j];}a[j + 1] = temp;}printArray(a, length);
}

4、希尔排序图解
在这里插入图片描述

void shellSort2() {   //面试书int a[] = { 3,5,9,6,1,8,0,4,2 };int length = sizeof(a) / sizeof(a[0]);int h ,i,j;for (h=length/2; h>0; h=h/2){for (i = h; i < length; i++){int temp = a[i];for (j = i-h; j >=0 && temp<a[j]; j-=h){a[j + h] = a[j];}a[j + h] = temp;}}printArray(a, length);
}

参考自https://blog.csdn.net/aabbcc132/article/details/88540291

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/567829.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

iphone最新款手机_苹果用户不换安卓手机的8点原因,最后一点最关键

快速的更新换代似乎已经成为了安卓手机的发展规律。与之相比&#xff0c;苹果公司的发展却逐渐从之前的“特立独行”变为了“固步自封”&#xff0c;产品风格也由原先的桀骜不驯&#xff0c;转变为现在向市场的不断妥协。即便如此&#xff0c;仍旧有很大一部分苹果用户没有考虑…

windows和android双系统平板,Windows平板打造双系统爽玩安卓APP

随着微软的surface更新换代&#xff0c; Windows平板是越来越受欢迎&#xff0c;在工作上&#xff0c;win平板处理办公文件和兼容性的优点得到了大家认可。但是在视听娱乐等休闲方面&#xff0c;始终还是没有安卓平板来的好用&#xff0c;而且安卓平台有大量好玩的APP&#xff…

ilitek win10 触摸屏驱动_想做多大尺寸触摸框找融创方圆定制触摸屏工厂

融创方圆定制大尺寸拼接屏多点触摸屏&#xff0c;大屏拼接屏红外多点触摸框&#xff0c;触摸拼接屏&#xff0c;拼接触摸屏&#xff0c;触摸拼接墙&#xff0c;拼接墙触摸屏&#xff0c;我们大尺寸多点触摸框反应灵敏&#xff0c;无盲区&#xff0c;无鬼点&#xff0c;无漂移&a…

most recent call last 报错_视频|救援情景剧、创意快闪……400w+人次为重庆这场消防宣传活动打call...

鼎牛配资app西安笑赢配资大赚配资公司推选简配资乐赢资本 昔日&#xff0c;两江新区2020年“119”消防宣扬月启动典礼正在重庆欢欣谷盛大举办。两江新区消防供图华龙网-新重庆客户端 收华龙网-新重庆客户端11月4日18时40分讯(记者 李华裔)按照实在救济动作改编的情形剧、小伴侣…

html中使用什么标签做的导航栏_自媒体人如何自己建立一个手机网站,超简单,任何人都能做...

随着移动互联网的兴起&#xff0c;越来越多的公司、个人把展示的内容转到了手机网站上&#xff0c;学会制作手机网站就成了大家关注的热点。传统的网页制作工具制作电脑端的网站功能很强大&#xff0c;但手机网站由于手机屏幕大小和CPU处理能力较弱&#xff0c;对网站的要求与传…

哈夫曼编码和带权路径计算

哈夫曼树是一种带权路径长度最短的二叉树&#xff0c;也称为最优二叉树。下面用一幅图来说明。 它们的带权路径长度分别为&#xff1a; 图a&#xff1a; WPL5*27*22*213*254 图b&#xff1a; WPL5*32*37*213*148 可见&#xff0c;图b的带权路径长度较小&#xff0c;我们可以…

codesys raspberry pi_11月7日|Pi第四次减产来袭?4点浅析中文区用户关心的问题

手里有派&#xff0c;心中有爱这两天一些派友私下找我在抱怨&#xff0c;也有用户在我们的微信社群发出所谓的灵魂询问&#xff1a;“主网在哪里&#xff1f;&#xff1f;制宪大会在哪里&#xff1f;停产或者减产在哪里&#xff1f;kyc在哪里&#xff1f;”我简单的回应一下&am…

android 网页取词,有道词典屏幕取词怎么用?,你知道吗?在浏览网页

有道词典屏幕取词怎么用&#xff1f;,你知道吗&#xff1f;在浏览网页你知道吗&#xff1f;在浏览网页时遇到不懂的外文、词语等&#xff0c;我们可以通过有道词典的屏幕取词来进行翻译哦&#xff01;好吧&#xff0c;你肯定会问&#xff1a;我如何使用这一功能呢&#xff1f;下…

你发这些什么目的_微信CRM系统究竟是什么?

作为一个电商运营人&#xff0c;近期行业内经常会听到一个名词&#xff0c;微信CRM系统&#xff0c;私域流量&#xff0c;用微信CRM系统打造属于自己的私域流量。相信很多做电商的也是和我一样&#xff0c;对于这个词很耳熟&#xff0c;但是又不知道是什么意思&#xff0c;因此…

android微信支付坑,微信支付踏坑之旅

其实微信支付的集成步骤也就那么几步&#xff0c;奈何第一次接触无论是微信官方文档还是5SDK文档都看的晕头转向&#xff0c;于是我换个思路(以下只针对android app支付功能&#xff0c;服务端为java)1、首选确定app已经开通支付功能&#xff0c;确保 包名、应用签名、appid、m…

多个服务器数据互通_5月23日部分服务器数据互通公告!

为了提升游戏品质&#xff0c;给各位仙友创造更好的游戏环境&#xff0c;我们将于5月23日6:00对部分服务器进行“数据互通”操作&#xff0c;开服待定。参与合服的服务器可参与合服活动&#xff0c;详细请合服后登录游戏查看。服务器“数据互通”后&#xff0c;原登录界面上的服…

conda安装tensorflow-gpu

1、安装Anaconda Anaconda下载地址&#xff1a;https://www.anaconda.com/download/ 选择合适的版本&#xff0c;进行下载安装即可。 下载完成后就双击安装就可以了 一步一步按照默认的来就可以了&#xff0c;注意一下&#xff0c;注意勾选添加到环境变量&#xff0c;不然后面…

github下载

第一种方案&#xff1a;修改host&#xff08;几乎属于无效方案&#xff09; 1、获取GitHub的官方CDN地址 打开https://www.ipaddress.com/查询以下三个链接的DNS地址解析github.comassets-cdn.github.comgithub.global.ssl.fastly.net 记录下查询到的IP地址。 2、修改系…

rt-thread怎么使用数码管_三菱FX PLC功能指令,怎么学?

很多小伙伴问学完编程入门后又应该学习什么内容呢&#xff1f;我的回答是&#xff0c;学完三菱编程入门后应该学习三菱FX PLC功能指令&#xff0c;包括功能指令的预备知识、三菱FX系列PLC的编程元件、寻址方式等&#xff0c;以及三菱FX PLC的所有功能指令的使用和应用。注意&am…

html界面等待状态,html 等待界面

发送中,请稍等...function show(o1,o2,open){var o1 document.getElementById(o1);var o2 document.getElementById(o2);o1.style.width document.documentElement.scrollWidth;o1.style.height document.documentElement.scrollHeightif(open){o1.style.display "bl…

信息学奥赛之数学一本通_部分地区中考加分,又一批中学公布中考认可信息学特长生!...

点击上面微信号关注我关注我哟定期推送帐号信息学新闻&#xff0c;竞赛自主招生&#xff0c;信息学专业知识&#xff0c;信息学疑难解答&#xff0c;信息学训练营信息等诸多优质内容的微信平台&#xff0c;欢迎分享文章给你的朋友或者朋友圈&#xff01;有任何问题请联系小编&a…

电脑打开微信小程序_终于可以在电脑上玩转微信小程序啦

微信小程序可以在电脑PC端打开吗&#xff1f;这是很久之前都有朋友问的一个问题了&#xff0c;今天可以告诉大家这个好消息&#xff0c;微信PC端2.7.0.65测试版已经增加这一功能了。目前该功能支持windows 7及以上版本操作系统&#xff0c;Mac还未开放&#xff0c;应该不会等太…

html九宫格抽奖视频,原生JS实现九宫格抽奖效果

效果图&#xff1a;代码如下&#xff1a;*{margin:0;padding:0;}#container{width:310px;height:310px;margin:30px auto;}#ul1{width:310px;height:310px;list-style:none;}#ul1 li,#ul1 a{width:100px;height:100px;border:1px solid #565656;float:left;text-align:center;l…

Windows 系统下.sh文件的运行

在论文期间好多的python项目是用Linux系统下写的&#xff0c;为了省事就尝试了再Windows系统下运行&#xff0c;以下是运行的过程&#xff1a; 1&#xff0c;Git的安装&#xff0c;下载Git并安装&#xff0c;我是在360软件管家中直接下载安装的&#xff0c;速度还不错&#xf…

axure原型怎么让文字自动换行_理解「回车」和「换行」,纠正数据输入过程中的坏习惯...

各位朋友&#xff0c;你们好。今天和大家分享的是一个很小很的技巧&#xff1a;文字、内容换行。关于文字换行&#xff0c;你们可能已经看过了很多这方面的文章&#xff0c;那些文章中确实已经讲解过不少换行操作的方法。那么我今天讲什么呢&#xff1f;大家看内容目录(是不是介…