当前位置:首页 > 公众号精选 > 玩转嵌入式
[导读]一、冒泡排序冒泡排序(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) 下限的影响。

以下代码可以直接运行:

#includeusingnamespace 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全部置0void 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数组中的全部元素置0int main(){cout<<"原始数组:";for(int i=0;icout<cout<bucketSort(a);cout<<"排序后数组:";for(int i=0;icout<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;iif(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;idivisor*=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;jb[i][j]=0;}
四、合(归)并排序
归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。

#includeusing 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 代码 数字化

玩转嵌入式

478 篇文章

关注

发布文章

编辑精选

技术子站

关闭