c++:选择排序和冒泡排序
2012-12-03 15:02
337 查看
//============================================================================ // Name : suanfa.cpp // Author : // Version : // Copyright : Your copyright notice // Description : Hello World in C++, Ansi-style //============================================================================ #include <iostream> #define N 5 using namespace std; void SelectSort(int r[],int n)//数组下标从1开始 { int index=0; for(int i=1;i<=n-1;i++)//对N个记录进行n-1次的简单选择排序 { index=i; for(int j=i+1;j<=n;j++) { if(r[index]>r[j]) { index=j;//找到最小的位置 } } if(index!=i) { r[i]=r[index]^r[i]; r[index]=r[i]^r[index]; r[i]=r[i]^r[index]; } } } void BubbleSort(int r[],int n) { //气泡排序开始的时候扫描整个序列,在扫描过程中两两比较相邻记录,如果反序则交换,最终 //最大记录就被放到序列的最后一个位置,直到n-1次排序之后 for(int i=0;i<n-1;i++) { for(int j=i+1;j<n;j++) { if(r[i]>r[j]) { r[i]=r[i]^r[j]; r[j]=r[i]^r[j]; r[i]=r[i]^r[j]; } } } } void BubbleSort1(int r[],int n) { //气泡排序开始的时候扫描整个序列,在扫描过程中两两比较相邻记录,如果反序则交换,最终 //最大记录就被放到序列的最后一个位置,直到n-1次排序之后 int exchange = n;//第一趟气泡排序的范围是r[1]到r while(exchange)//仅当上一趟排序有记录交换才进行本趟排序 { int bound=exchange;//每次循环开始都要先设置exchange为0,为了避免的就是减少循环的次数 exchange=0; for(int j=1;j<bound;j++) { if(r[j]>r[j+1]) { r[j]=r[j+1]^r[j]; r[j+1]=r[j]^r[j+1]; r[j]=r[j]^r[j+1]; exchange=j; } } } } void display(int r[],int n) { for(int i=0;i<n;i++) { cout<<r[i]<<endl; } } int main() { int r[5]={5,4,3,2,1}; int n=N; SelectSort( r, n); display(r,n); BubbleSort(r, n); display(r,n); BubbleSort1(r, n); display(r,n); return 0; }
相关文章推荐
- C++三种排序,快速排序、选择排序、冒泡排序----简单代码
- C/C++ 排序之一(冒泡排序、选择排序、交换排序)
- 冒泡排序和选择排序(C++实现)
- 插入排序、冒泡排序、选择排序、希尔排序、快速排序、归并排序、堆排序和LST基数排序——C++实现
- 几种常用的排序算法:插入排序、冒泡排序、选择排序的算法及C++实现
- 插入排序、冒泡排序、选择排序、希尔排序、高速排序、归并排序、堆排序和LST基数排序——C++实现
- C++ ------------排序算法(冒泡排序-快速排序-选择排序-插入排序-希尔排序)
- C/C++ 排序之一(冒泡排序、选择排序、交换排序)
- [C++]数据结构:排序算法Part1----冒泡排序、选择排序、插入排序、堆排序
- C++中的冒泡排序,选择排序,插入排序
- 冒泡排序 & 选择排序 (C++)
- C++实现八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序等
- [C++]数据结构:排序算法Part1----冒泡排序、选择排序、插入排序、堆排序
- C++各种常见排序算法 冒泡排序,插入排序,快排序,选择排序,希尔排序
- C++实现冒泡排序,选择排序,插入排序,快速排序,归并排序
- 插入排序、冒泡排序、选择排序、希尔排序、快速排序、归并排序、堆排序和LST基数排序的C++代码实现
- 选择排序、冒泡排序、插入排序、基数排序、快速排序、归并排序完整C++实现
- C++基于链表 指针的插入排序,冒泡排序,选择排序,计数排序
- C++ 选择排序、冒泡排序、插入排序
- 排序算法之冒泡排序与选择排序