冒泡排序和选择排序C++实现
来源:互联网 发布:卖家怎么投诉淘宝买家 编辑:程序博客网 时间:2024/05/10 06:09
冒泡排序和选择排序C++实现
冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到最大数前的一对相邻数,将小数放前,大数放后,第二趟结束,在倒数第二个数中得到一个新的最大数。如此下去,直至最终完成排序。
冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到最大数前的一对相邻数,将小数放前,大数放后,第二趟结束,在倒数第二个数中得到一个新的最大数。如此下去,直至最终完成排序。
选择排序的基本概念是:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include <stdio.h>#include <tchar.h>#include <cstdlib>#include <iostream>#include <sys/timeb.h>#include <ctime>#include <climits>#include <cassert>using namespace std;//冒泡排序void BubbleSort(int *arr,int len){ //检测输入参数 assert(arr!=NULL); //判断一轮检测是否有交换 bool change = true; //有交换才继续排序 for(int i= len-1; i > 1 && change; --i) { change = false; for(int j=0;j<i; ++j) { if(arr[j] > arr[j+1]) { int tmp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = tmp; change = true; } } }}//选择排序void SelectionSort(int *arr,int len){ //输入参数检测 assert(arr!=NULL); //最小值所在值的下标 int min = 0; //len个数,只需要进行len-1次选取就可以了,最后一个就是最大的值 for(int i = 0; i < len - 1; ++i) { //第i个最小值下标 min = i; //选取最小值的下标(前面i个数据已经排好序了) for(int j = i + 1; j < len ; ++j) { if(arr[j] < arr[min]) { //记录最小值的下标 min = j; } } //交换最小值到位置i if(min != i) { int temp = arr[min]; arr[min] = arr[i]; arr[i] = temp; } }}int _tmain(int argc, _TCHAR* argv[]){ int arrLen = 0; cout << "please input the size of the array : " << endl; cin >> arrLen; int* arr = new int[arrLen]; int* arr2 = new int[arrLen]; for(int i=0;i<arrLen;++i) { arr[i] = rand() % 100; arr2[i] = rand() % 100; } cout << "冒泡排序原始的数组为:" ; for(int i=0;i<arrLen;++i) { cout << arr[i] << " "; } BubbleSort(arr,arrLen); cout << endl << "冒泡排序的数组为:" ; for(int i=0;i<arrLen;++i) { cout << arr[i] << " "; } cout << "选择排序原始的数组为:" ; for(int i=0;i<arrLen;++i) { cout << arr2[i] << " "; } SelectionSort(arr2,arrLen); cout << endl << "选择排序的数组为:" ; for(int i=0;i<arrLen;++i) { cout << arr2[i] << " "; } system("pause"); return 0;}
0 0
- C语言数组实现冒泡排序和选择排序程序
- 冒泡排序和选择排序(C实现)
- C语言数组实现冒泡排序和选择排序程序
- C语言实现冒泡排序和简单选择排序
- 选择排序 冒泡排序 C语言实现
- c++:选择排序和冒泡排序
- C 语言 选择排序和冒泡排序
- C#-冒泡排序和选择排序
- Objective-C - 冒泡排序和选择排序
- Objective-c 冒泡排序和选择排序
- java实现选择排序和冒泡排序
- Java 实现冒泡排序和选择排序
- 实现冒泡排序和选择排序
- 冒泡排序和选择排序de实现
- 冒泡排序和选择排序C++实现
- 冒泡排序和简单选择排序实现
- Java实现选择排序和冒泡排序
- 数组实现冒泡法和选择法排序(C++)
- Android M 新的运行时权限开发者需要知道的一切 (安卓6.0新权限系统)
- 分享几一些网络安全和编程相关的书1(不定期更新........)
- IBM SOA[ESB,BPM,Portal]基础架构图解
- UNIX网络编程——System V 消息队列
- 使用Simple-Spring-Memcached注解做缓存操作
- 冒泡排序和选择排序C++实现
- Android仿印象笔记的自定义菜单控件
- xml格式文件(大概有50G)转换为json格式 上传到mongodb数据库中
- ubuntu下sublime 3安装Package Control的超简单方法
- [CSS]一些常用命名单词
- FlashFXP
- Xcode常用调试命令
- hadoop中partition
- 配置spring-mvc + simple-spring-memcached