冒泡法排序_c++實現


看完了郝斌老師的c語言視頻,冒泡法排序,就試着寫了。我覺得學習算法最重要的不是代碼,而是它的原理。

代碼:

 

  1 /**
  2  * Copyright (c) 1991 - 2016 Arvin Tang.
  3  * All rights reserved.
  4  *
  5  * 文件名稱:郝斌C語言視頻教程_163_冒泡排序
  6  * 簡要描述:用冒泡法排序
  7  *
  8  * 當前版本:1.0
  9  * 作    者:
 10  * 完成日期:2016-1-9
 11  * 修訂說明:
 12  *
 13  * 取代版本:
 14  * 作    者:
 15  * 完成日期:
 16  * 修訂說明:
 17  */
 18 # include <iostream>
 19 
 20 using namespace std;
 21 
 22 void up_sort(int * p, int num);//冒泡升序排序函數
 23 void down_sort(int * p, int num);//冒泡降序排序函數
 24 
 25 int main(int argc, char const *argv[])
 26 {
 27     int num;
 28 
 29     int i;
 30 
 31     int op;//菜單選項
 32 
 33     cout<<"請輸入你要排序的個數:"<<endl;
 34     cin>>num;
 35 
 36     //申請動態內存
 37     int * arrary = (int *)malloc(sizeof(int)*num);
 38     if(arrary == NULL)
 39     {
 40         cout<<"申請動態數組失敗!"<<endl;
 41         exit(0);//exit(0)表示正常結束,exit(非0值表示錯誤返回)
 42     }
 43 
 44     cout<<"請輸入你要排序的數字:"<<endl;
 45     for(i = 0; i < num; i++)
 46     {
 47         cin>>arrary[i];
 48     }
 49 
 50     cout<<"請選擇排序方式對應的序號:\t1 升序(從小到大)\t2 降序(從大到小)"<<endl;
 51     cin>>op;
 52 
 53     switch(op)
 54     {
 55         case 1 :
 56         up_sort(arrary,num);
 57         cout<<"升序已排完:"<<endl;
 58         break;
 59         case 2 :
 60         down_sort(arrary,num);
 61         cout<<"降序已排完:"<<endl;
 62         break;
 63         default:
 64         break;
 65     }
 66 
 67     for(i = 0; i < num; i++)
 68     {
 69         cout<<arrary[i]<<"\t";
 70     }
 71 
 72     cout<<"\n";
 73 
 74     return 0;
 75 }
 76 
 77 /**
 78  * 函數名稱:冒泡法_升序排序
 79  * 輸入參數:一維數組地址,數組元素個數
 80  * 輸出參數:
 81  * 返 回 值:
 82  */
 83 void up_sort(int * p, int num)
 84 {
 85     int i;
 86     int j;
 87     int temp;
 88 
 89     for(i = 0; i < num-1; i++)
 90     {
 91         for(j = 0; j < num-i-1; j++)
 92         {
 93             if(p[j] > p[j+1])
 94             {
 95                 temp = p[j+1];
 96                 p[j+1] = p[j];
 97                 p[j] = temp;
 98             }
 99         }
100     }
101 }
102 
103 /**
104  * 函數名稱:冒泡法_降序排序
105  * 輸入參數:一維數組地址,數組元素個數
106  * 輸出參數:
107  * 返 回 值:
108  */
109 void down_sort(int * p, int num)
110 {
111     int i;
112     int j;
113     int temp;
114 
115     for(i = 0; i < num-1; i++)
116     {
117         for(j = 0; j < num-i-1; j++)
118         {
119             if(p[j] < p[j+1])
120             {
121                 temp = p[j+1];
122                 p[j+1] = p[j];
123                 p[j] = temp;
124             }
125         }
126     }
127 }

 

 

效果:



注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com