排序总结

排序总结

快速排序基本思路:
基本思想:
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…

linux 电台,linux下架设个人电台的方法

两年前(基本上刚好是两年了)&#xff0c;我还在用windows的时候&#xff0c;曾经写过一篇win下架电台的文章&#xff0c;后来不用windows了&#xff0c;基本上也就没搞过这个事情了&#xff0c;最近看到有个icecast&#xff0c;就忍不住试了一下&#xff0c;在这里汇报下结果。…

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

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

主机数,子网数,网络号,主机号

IP地址分类&#xff1a; A类&#xff1a;000~127&#xff0c;默认子网掩码&#xff1a;255.0.0.0 B类&#xff1a;128~191&#xff0c;默认子网掩码&#xff1a;255.255.0.0 C类&#xff1a;192~223&#xff0c;默认子网掩码&#xff1a;255.255.255.0 D类&#xff1a;224~239 …

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

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

荣耀有鸿蒙手机吗,惊喜!荣耀手机也能升鸿蒙:这5款机型用户有福了

今天上午&#xff0c;华为Mate X2 4G版折叠屏手机曝光&#xff0c;这款手机的主要配置和华为Mate X2 5G版本几乎一模一样&#xff0c;处理器也是使用麒麟9000&#xff0c;但是不支持5G网络。去年下半年&#xff0c;华为推出了Mate系列年度旗舰&#xff0c;包括Mate 40、Mate 40…

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

哈夫曼树是一种带权路径长度最短的二叉树&#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微信h5转原生支付,微信原生支付流程以及踩坑

本次记录的是微信“JSAPI”的支付方式 也就是微信内H5页面调起支付&#xff0c;其他支付方式也大同小异&#xff0c;总体的流程和思路大致是一样的&#xff0c;基本配置方面就不详细记录&#xff0c;只需要商户号和商户Key&#xff0c;这个是配套的&#xff0c;还有跟商户号绑…

python编程学习做什么-什么样的人要学点python编程?请你对号入座

什么样的人需要学点python编程&#xff1f; 时代越来越不一样了&#xff0c;编程这种专业程序员的工作&#xff0c;已经开始应用于各种其他日常工作中&#xff0c;就以前象征着互联网的电脑&#xff0c;现在早已进入普通人家。 那么什么样的人需要学点python编程呢&#xff1f;…

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

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

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

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

C++ 输入有空格一行的接收

#include<iostream> #include<string> using namespace std; int main() {char input_str[100]; //输入有空格的一行。cin默认以空格结束cin.getline(input_str, 100);int num_num 0;int num_letter 0;int num_space 0;int num_other 0;int len strlen(input…

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

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

通过conda安装imgaug

直接采用pip install imgaug 错误 需要先安装sharply包 输入命令&#xff1a; conda install -c conda-forge shapely 然后输入命令&#xff1a; pip install imgaug 或者&#xff08;当上面安装命令出现超时等错误时&#xff09; pip install imgaug -i https://pypi.t…

多个服务器数据互通_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;不然后面…

ipv6的127位掩码如何表示_子网掩码为255.255.255.0代表的意思是什么?

展开全部子网掩码为代表的copy意思是代表有2113254个可用IP。总IP数为16&#xff0c;包括一个5261网络地址&#xff0c;一个广播4102地址和1653254个可用地址。子网掩码是一个32位地址&#xff0c;用于屏蔽IP地址的一部分以区别网络标识和主机标识&#xff0c;并说明该IP地址是…