[导读]一、冒泡排序冒泡排序(BubbleSort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排...
一、冒泡排序
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
以下代码可以直接运行:
#include
using namespace std;
template
//整数或浮点数皆可使用
void bubble_sort(T arr[], int len)
{
int i, j; T temp;
for (i = 0; i < len - 1; i )
for (j = 0; j < len - 1 - i; j )
if (arr[j] > arr[j 1])
{
temp = arr[j];
arr[j] = arr[j 1];
arr[j 1] = temp;
}
}
int main()
{
int arr[] = { 61, 17, 29, 22, 34, 60, 72, 21, 50, 1, 62 };
int len = (int) sizeof(arr) / sizeof(*arr);
bubble_sort(arr, len);
for (int i = 0; i < len; i )
cout << arr[i] << ' ';
cout << endl;
float arrf[] = { 17.5, 19.1, 0.6, 1.9, 10.5, 12.4, 3.8, 19.7, 1.5, 25.4, 28.6, 4.4, 23.8, 5.4 };
len = (int) sizeof(arrf) / sizeof(*arrf);
bubble_sort(arrf, len);
for (int i = 0; i < len; i )
cout << arrf[i] << ' ';
return 0;
}
二、快速排序
快速排序(Quicksort)是对冒泡排序的一种改进。
快速排序的思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
以下代码可以直接运行:
#include
using namespace std;
void Qsort(int arr[], int low, int high){
if (high <= low) return;
int i = low;
int j = high 1;
int key = arr[low];
while (true)
{
/*从左向右找比key大的值*/
while (arr[ i] < key)
{
if (i == high){
break;
}
}
/*从右向左找比key小的值*/
while (arr[--j] > key)
{
if (j == low){
break;
}
}
if (i >= j) break;
/*交换i,j对应的值*/
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
/*中枢值与j对应值交换*/
int temp = arr[low];
arr[low] = arr[j];
arr[j] = temp;
Qsort(arr, low, j - 1);
Qsort(arr, j 1, high);
}
int main()
{
int a[] = {57, 68, 59, 52, 72, 28, 96, 33, 24};
Qsort(a, 0, sizeof(a) / sizeof(a[0]) - 1);/*这里原文第三个参数要减1否则内存越界*/
for(int i = 0; i < sizeof(a) / sizeof(a[0]); i )
{
cout << a[i] << "";
}
return 0;
}/*参考数据结构p274(清华大学出版社,严蔚敏)*/
三、桶排序
桶排序(Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的数组内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。但桶排序并不是 比较排序,他不受到 O(n log n) 下限的影响。
以下代码可以直接运行:
#include
usingnamespace std;
int a[]={1,255,8,6,25,47,14,35,58,75,96,158,657};
const int len=sizeof(a)/sizeof(int);
int b[10][len 1]={0};//将b全部置0
void bucketSort(int a[]);//桶排序函数
void distribute Elments(int a[],int b[10][len 1],int digits);
void collectElments(int a[],int b[10][len 1]);
int numOfDigits(int a[]);
void zeroBucket(int b[10][len 1]);//将b数组中的全部元素置0
int main()
{
cout<<"原始数组:";
for(int i=0;i
cout<
cout<
bucketSort(a);
cout<<"排序后数组:";
for(int i=0;i
cout<
cout<
return 0;
}
void bucketSort(int a[])
{
int digits=numOfDigits(a);
for(int i=1;i<=digits;i )
{
distributeElments(a,b,i);
collectElments(a,b);
if(i!=digits)
zeroBucket(b);
}
}
int numOfDigits(int a[])
{
int largest=0;
for(int i=0;i
if(a[i]>largest)
largest=a[i];
int digits=0;//digits为最大值的位数
while(largest)
{
digits ;
largest/=10;
}
return digits;
}
void distributeElments(int a[],int b[10][len 1],int digits)
{
int divisor=10;//除数
for(int i=1;i
divisor*=10;
for(int j=0;j
{
int numOfDigist=(a[j]%divisor-a[j]%(divisor/10))/(divisor/10);
//numOfDigits为相应的(divisor/10)位的值,如当divisor=10时,求的是个位数
int num= b[numOfDigist][0];//用b中第一列的元素来储存每行中元素的个数
b[numOfDigist][num]=a[j];
}
}
void collectElments(int a[],int b[10][len 1])
{
int k=0;
for(int i=0;i<10;i )
for(int j=1;j<=b[i][0];j )
a[k ]=b[i][j];
}
void zeroBucket(int b[][len 1])
{
for(int i=0;i<10;i )
for(int j=0;j
b[i][j]=0;
}
四、合(归)并排序
归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。#include
using namespace std;
void merge(int *data, int start, int mid, int end, int *result)
{
int i, j, k;
i = start;
j = mid 1; //避免重复比较data[mid]
k = 0;
while (i <= mid
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
北京2022年10月19日 /美通社/ -- 10月18日,北京市经济和信息化局发布2022年度第一批北京市市级企业技术中心创建名单的通知,诺诚健华正式获得"北京市企业技术中心"认定。 北京市企业技...
关键字:
BSP
ARMA
COM
代码
实际上函数指针本质也是一个指针,只不过这个指针指向的不是内存中的一段数据而是内存中的一段代码
关键字:
指针
数据
代码
苏州2022年10月17日 /美通社/ -- 开拓药业(股票代码:9939.HK),一家专注于潜在同类首创和同类最佳创新药物研发及产业化的生物制药公司,宣布其自主研发、潜在同类首创的福瑞他恩(KX-826)治疗痤疮的中国...
关键字:
ST
FDA
代码
ADI
在智能汽车时代,保障智能汽车数据安全已成为一项新的重要课题。
关键字:
丰田
代码
信息安全
南京2022年9月16日 /美通社/ -- 说到"世界清洁地球日",恐怕很多人都一头雾水。作为全球最重要的环境保护活动之一,该节日"致力于通过影响人类行为模式的改变以应对世界上的垃圾问题&q...
关键字:
电热水器
BSP
温度
代码
芝加哥2022年9月17日 /美通社/ -- 采用尖端微应答器技术彻底改变实物产品与材料跟踪的公司P-Chip Corporation,今日推出最新突破性p-Chip Code™安全跟踪标签。p-Chip代码跟踪器将基于...
关键字:
CHIP
代码
应答器
矩阵
东京2022年9月6日 /美通社/ -- 电通集团(Dentsu Group Inc.,东京证券交易所股票代码:4324;国际证券识别代码:JP3551520004);(总裁兼首席执行官:Hiroshi Igarashi...
关键字:
OS
代码
BSP
GROUP
(全球TMT2022年8月25日讯)8月22-24日,2022中国国际智能产业博览会在重庆开幕。蓝卓受邀参加本次盛会,展示新一代工业操作系统supOS4.0的新能力。 本次智博会,蓝卓重点展示supOS4...
关键字:
POS
操作系统
APP
代码
最新发布的2022年《中国新富人群财富健康指数》表明: 金融素养与投资风险意识呈正相关,投资者教育势在必行 新富家庭财务需求多样,共同协商可助家庭克服理财盲点 新富人群期待投顾服务为财富管理保驾护航...
关键字:
BSP
ADVANCED
INA
代码
浙江湖州2022年8月24日 /美通社/ -- 近日,森赫电梯与建业集团达成战略合作,成为其电梯设备设计、供应及安装维保服务集采供应商。森赫电梯与建业集团成功携手,未来,双方将继续展开多元化的深入合作。...
关键字:
电梯
BSP
代码
数字化
2022年上半年收入7.1亿元 同比增长14.5% 嵌入式软件和安全支付产品发展势头强劲 收入同比增长28.7% 香港2022年8月16日 /美通社/ -- 金邦达宝嘉控股有限公司及其附属公司(以下合称“...
关键字:
数字化
嵌入式软件
供应链
代码
南京2022年8月12日 /美通社/ -- 热水器"冷热不均"一直困扰着普通消费者的家庭,作为以技术力、创新力享誉海内外的家电巨头A.O.史密斯以消费者的痛点作为出发点,凭借百年沉淀的品牌底蕴,一举推...
关键字:
电热水器
BSP
温度
代码
上海2022年8月12日 /美通社/ -- 8月11日上午,全球领先的多元化专业服务与投资管理公司高力国际(纳斯达克和多伦多证券交易所代码:CIGI)与中国绿发在VOCO千岛湖阳光大酒店举行了战略及合资合作协议签约仪式。...
关键字:
代码
纳斯达克
行业标准
COM
苏州2022年8月9日 /美通社/ -- 北京时间2022年8月9日,开拓药业(股票代码:9939.HK),一家专注于潜在同类首创和同类最佳创新药物研发及产业化的生物制药公司,今日宣布,其自主研发的新型靶向雄激素受体(A...
关键字:
OTA
AC
ST
代码
上海2022年7月25日 /美通社/ -- 近日,高力国际发布2022第二季度上海办公楼市场研究快报。 2022年第二季度,在疫情影响下,上海办公楼市场整体活跃度显著降低。新项目均延迟入市,租赁需求及成交活跃度大幅放缓...
关键字:
COM
CORPORATE
互联网
代码
上海2022年7月25日 /美通社/ -- 7月21日,2022年亚洲企业社会责任论坛暨颁奖典礼顺利召开,全球领先的多元化专业服务与投资管理公司高力国际(纳斯达克证交所交易代码:CIGI;多伦多证交所交易代码:CIGI)...
关键字:
TI
ASIA
代码
可持续发展
上海2022年7月12日 /美通社/ -- 7月12日 上午,由业界领先的多元化专业服务和投资管理公司高力国际(纳斯达克和多伦多证券交易所代码:CIGI)在上海成功召开全力以"复",跑出&q...
关键字:
加速度
BSP
代码
楼宇
深圳2022年7月12日 /美通社/ -- 近日,深交所通报了主板、创业板上市公司2021年度信息披露考核结果,考核结果显示,CTI华测检测(证券代码:300012)获得深交所2021年度信息披露“A”级考核结果,这是C...
关键字:
TI
代码
COM
可持续发展
DXC成为俱乐部数字转型合作伙伴、主要衫袖合作伙伴和曼联基金会的展示合作伙伴 曼联将利用DXC作为数字化转型全球领导者的经验 英国曼彻斯特2022年7月6日 /美通社/ -- 随着足球俱乐部转向技术来改变运营并提升全...
关键字:
BSP
TECHNOLOGY
数字化
代码
百济神州与深信生物将共同推进数个mRNA-LNP项目的研发工作,百济神州将获得这些项目所产出的候选产品的全球独家开发和商业化权利 百济神州还将获得深信生物专有LNP技术的非独家使用许可,用于支持内部研发工作...
关键字:
神州
BSP
代码
TI