冒泡,选择,插入排序算法C++实现
来源:互联网 发布:linux matlab 激活 编辑:程序博客网 时间:2024/05/16 18:26
void Swap(int &a, int &b){ int Temp = a; a = b; b = Temp;}void ShowSortResult(int *Array, int ArraySize){ for (int k = 0; k < ArraySize; ++k) cout << Array[k] << " "; cout << endl;}/*冒泡排序的原理:每次在无序队列里将相邻两个数依次进行比较,将小数调换到前面,逐次比较,直至将最大的数移到最后。最将剩下的N-1个数继续比较,将次大数移至倒数第二位。依此规律,直至比较结束。冒泡最大放后排*/void BubbleSort(int *Array, int ArraySize){ for (int i = 0; i < ArraySize; ++i) { for (int j = 0; j < ArraySize - i - 1; ++j) //第一趟将最大数挑出来,排到了最后 { if (Array[j] > Array[j + 1]) Swap(Array[j], Array[j + 1]); } ShowSortResult(Array, ArraySize); }}/*选择排序的原理:每次在无序队列中“选择”出最小值,放到有序队列的最后,并从无序队列中去除该值。选择最小放前排*/void SelectionSort(int *Array, int ArraySize){ for (int i = 0; i < ArraySize; ++i) { int min = i; for (int j = i + 1; j < ArraySize; ++j) { if (Array[min] > Array[j]) min = j; } if (min != i) Swap(Array[min], Array[i]); ShowSortResult(Array, ArraySize); } }/*插入排序的原理:始终定义第一个元素为有序的,将元素逐个插入到有序排列之中,其特点是要不断的移动数据,空出一个适当的位置,把待插入的元素放到里面去。1〉从第一个元素开始,该元素可以认为已经被排序2〉取出第一个未排序元素存放在临时变量temp中,在已经排序的元素序列中从后往前扫描,逐一比较3〉如果temp小于已排序元素,将该元素移到下个位置4〉重复步骤3〉,直到找到已排序的元素小于或者等于*/void InsertSort(int *Array, int ArraySize){ for (int i = 1; i < ArraySize; ++i) //从第一个元素开始,第0个默认有序 { int temp = Array[i]; //将第一个元素放入临时变量中 int j; for (j = i - 1; j >= 0; j--) //需要比较i次,但是因为需要向后移动,所以从i-1开始,>=0结束 { if (temp < Array[j]) //如果临时变量小于当前值,则将当前值向后移动一位 Array[j + 1] = Array[j]; else //如果临时变量大于当前值,说明找到位置了,跳出循环 break; } Array[j+1] = temp; //将临时变量放在j+1的位置上 }}int main(){ int TestArray[10] = { 4, 12, 12, 45, 3, 9, 22, 56, 32, 14 }; int ArrayLength = sizeof(TestArray) / sizeof(int); /*******************************************/ /* BubbleSort */ /*******************************************/ //cout << "Before Sort :"; //ShowSortResult(TestArray, ArrayLength); // //BubbleSort(TestArray, ArrayLength); // //cout << "After Sort :"; //ShowSortResult(TestArray, ArrayLength); /*******************************************/ /* SelectionSort */ /*******************************************/ //cout << "Before Sort :"; //ShowSortResult(TestArray, ArrayLength); //SelectionSort(TestArray, ArrayLength); //cout << "After Sort :"; //ShowSortResult(TestArray, ArrayLength); /*******************************************/ /* InsertSort */ /*******************************************/ cout << "Before Sort :"; ShowSortResult(TestArray, ArrayLength); InsertSort(TestArray, ArrayLength); cout << "After Sort :"; ShowSortResult(TestArray, ArrayLength); system("pause"); return 0;}
参考文章:
http://blog.csdn.net/xcbeyond/article/details/7341562
http://blog.csdn.net/wdkirchhoff/article/details/41787145
阅读全文
0 0
- 冒泡排序、选择排序、插入排序 算法实现(C++)
- 冒泡排序、选择排序、插入排序 算法实现(C++)
- 冒泡排序、选择排序、插入排序 算法实现(C++)
- 冒泡排序、选择排序、插入排序 算法实现(C++)
- Objective-C实现冒泡,选择,插入,快速排序算法
- C 排序算法 (冒泡)(选择)|(插入)|(快速)
- java实现冒泡、选择、插入排序算法
- 冒泡-选择-插入排序算法的实现
- 冒泡,选择,插入排序算法C++实现
- 选择排序&插入排序&冒泡排序&快速排序算法实现
- #.java实现排序算法:插入排序、选择排序、冒泡排序
- 冒泡排序、选择排序、插入排序 算法实现
- java实现冒泡排序,选择排序,插入排序算法详解
- 冒泡排序、插入排序、选择排序--C语言实现
- c语言实现选择排序、冒泡排序、插入排序
- c排序算法:选择、冒泡、插入、快速、归并、堆排序
- 冒泡选择插入排序算法
- 选择-冒泡-插入排序算法
- HDU 2243-考研路茫茫——单词情结(AC自动机+矩阵乘法+求补)
- BigDecimal 转 int
- gitHub上如何删除已存在的项目
- NAT(地址转换模式)
- linux 下iostat 命令用法举例
- 冒泡,选择,插入排序算法C++实现
- python用于数据科学教程
- @SuppressWarnings 手册
- Web22.正则表达式
- 超级楼梯 HDU-2041
- 和为s的两个数字VS和为s的连续正数序列
- 深入理解Java虚拟机(3)-.Class文件格式(二)
- Dataset 输出Json格式
- AFNetworking 3.0 源码解读(十)之 UIActivityIndicatorView/UIRefreshControl/UIImageView + AFNetworking