2.冒泡排序----还是不懂,先记录下来

  1 /*
  2     冒泡排序: 效率很低,速度慢...不适合大量数据排序
  3 
  4     原理:从左向右扫描数据,选择交大的数据,放在右边,进行交换
  5     关于i和j的说明
  6 */
  7 #include "Bubble.h"
  8 #include <stdio.h>
  9 #include <iostream>
 10 using namespace std;
 11 
 12 void BubbleSort(int list[],int n);
 13 void PrintArray(int list[],int n);
 14 void BubbleSortBigToSmall(int list[],int n);
 15 int main()
 16 {
 17 
 18     const int nLen=10;
 19     int list[nLen] = {1,3,5,7,9,2,4,6,8,0};
 20 
 21 
 22     //从小到大排序
 23     cout<<"交换前的数据:    ";
 24     PrintArray(list,nLen);
 25     BubbleSort(list,nLen);
 26     cout<<"
交换后的数据:    ";
 27     PrintArray(list,nLen);
 28 
 29 
 30 
 31     //从大到小排序
 32     cout<<"
交换后的数据:    ";
 33     BubbleSortBigToSmall(list,nLen);
 34     PrintArray(list,nLen);
 35 
 36 
 37     cout<<"
hello world"<<endl;
 38     system("pause");
 39     return 0;
 40 }
 41 
 42 
 43 //从小到大排序
 44 void BubbleSort(int list[],int n)
 45 {
 46 
 47     for (int i=0;i<n-1;i++)
 48     {
 49         for (int j=0;j<n-1-i;j++)
 50         {
 51             if (list[j] > list[j+1])            // 比较运算符决定 从大到小,还是从小到大排序
 52             {
 53                 std::swap(list[j],list[j+1]);    //这个swap()是c++自带的交换函数
 54             }
 55         }
 56     }
 57 
 58     return ;
 59 }
 60 
 61 
 62 //从大到小排序
 63 void BubbleSortBigToSmall(int list[],int n)
 64 {
 65 
 66     for (int i=0;i<n-1;i++)
 67     {
 68         for (int j=0;j<n-1-i;j++)
 69         {
 70             if (list[j] < list[j+1])
 71             {
 72                 std::swap(list[j],list[j+1]);
 73             }
 74         }
 75     }
 76 
 77     return ;
 78 }
 79 
 80 //打印数组元素
 81 void PrintArray(int list[],int n)
 82 {
 83 
 84     for (int i=0;i<n;i++)
 85     {
 86         cout<<list[i]<<"  ";
 87     }
 88 
 89     return;
 90 }
 91 
 92 
 93 //获取数组的长度                这个留着以后来补充,暂时不知道怎么计算数组的长度
 94 int GetArrayLen(int list[])
 95 {
 96     int nSize=0;
 97     
 98     while (true)
 99     {
100         //通过异常来捕获越界
101 
102         nSize++;
103     }
104 
105 
106     return nSize;
107 }
108 
109 
110 //找出数组中的最大数
111 int GetMax(int list[],int nLen)
112 {
113 
114     int temp=0;
115     for (int i=0;i<nLen;i++)
116     {
117         if (list[i] > temp)
118         {
119             temp = list[i];
120         }
121     }
122 
123     printf("
temp=%d
",temp);
124 
125     return temp;
126 }
原文地址:https://www.cnblogs.com/Froger/p/6777821.html