赞
踩
随机给定一组数据,按照从大到小或者从小到大的顺序进行排列。
假设给定数据个数为m,按照从小到大进行排序。当数据个数为m时,需要进行比较的次数为m-1次,每次相邻数据比较后,将较大的数据放置在右侧,所有数据比较完成后右端数字为序列中的最大值。将最右端数字去除后对剩余的m-1个数据继续进行比较,比较次数为m-2。以此类推,当剩余数据个数为2时,比较排序次数位为1,此时的数据为从小到大序列,即完成冒泡排序。
假设数据序列为{34,25,78,22,56,15,89,97,73,26,78,65},按照从小到大,冒泡排序可以通过一下方式实现。
(1)for+for+if
#include <iostream> using namespace std; int main() { int arr1[12] = { 34,25,78,22,56,15,89,97,73,26,78,65 };//定义数组 int m = sizeof(arr1) / sizeof(arr1[1]) - 1;//求第一次比较所需次数 int temp = 0; for (int i = 0; i < m; i++) { for (int j = 0; j < m - i; j++) { if (arr1[j] > arr1[j + 1]) { temp = arr1[j + 1]; arr1[j + 1] = arr1[j]; arr1[j] = temp; } } } cout << "冒泡排序: "; for (int n = 0; n < 12; n++) //打印输出变换后的数组 { cout << arr1[n] << " "; } system("pause"); return 0; }
输出结果为:
冒泡排序: 15 22 25 26 34 56 65 73 78 78 89 97 请按任意键继续. . .
(2)while+for+if
#include <iostream> using namespace std; int main() { int arr1[12] = {34,25,78,22,56,15,89,97,73,26,78,65};//定义数组 int m = sizeof(arr1)/sizeof(arr1[1]) - 1; int temp = 0; while(m > 1) { for(int i = 0; i < m ; i++) { if(arr1[i] > arr1[i+1]) { temp = arr1[i+1]; arr1[i+1] = arr1[i]; arr[i] = temp; } } m--; } cout << "冒泡排序: "; for (int n = 0; n < 12; n++) //打印输出变换后的数组 { cout << arr1[n] << " "; } system("pause"); return 0; }
程序输出结果为:
冒泡排序: 15 22 25 26 34 56 65 73 78 78 89 97 请按任意键继续. . .
本篇文章仅对从小到大的冒泡排序程序进行设计,当排序顺序为从大到小时,设计思路类似。冒泡排序作为C++程序设计基础应用,在嵌入式软件开发类岗位的笔试和面试中会经常用到,科大讯飞、大疆2021届秋招笔试为面试者提供了较多的语言选择,包括C、C++、Python等,海康威视和浙江大华则仅提供了C++一种语言,因此多掌握几门语言的基础编程操作对于毕业生笔试和面试都很重要。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。