国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

利用C++的基本算法實(shí)現(xiàn)十個(gè)數(shù)排序

2020-01-26 15:43:27
字體:
供稿:網(wǎng)友

冒泡排序法
原理:
它重復(fù)地走訪過要排序的數(shù)列,一次比較兩個(gè)元素,如果他們的順序錯(cuò)誤就把他們交換過來。走訪數(shù)列的工作是重復(fù)地進(jìn)行直到?jīng)]有再需要交換,也就是說該數(shù)列已經(jīng)排序完成。

冒泡排序算法的運(yùn)作如下:
1.比較相鄰的元素。如果第一個(gè)比第二個(gè)大,就交換他們兩個(gè)。

2.對(duì)每一對(duì)相鄰元素作同樣的工作,從開始第一對(duì)到結(jié)尾的最后一對(duì)。在這一點(diǎn),最后的元素應(yīng)該會(huì)是最大的數(shù)。

3.針對(duì)所有的元素重復(fù)以上的步驟,除了最后一個(gè)。

4.持續(xù)每次對(duì)越來越少的元素重復(fù)上面的步驟,直到?jīng)]有任何一對(duì)數(shù)字需要比較。

示例代碼:

復(fù)制代碼 代碼如下:

#include<iostream> 
using namespace std;
int main(){
 //按照升序排列
 int a[10]={15,13,2,3,6,5,88,-3,30,40};
 int i,j,t;
 for(i=0;i<9;i++){
  for(j=0;j<(9-i);j++){
   if(a[j]>a[j+1]){
    t=a[j+1];
    a[j+1]=a[j];
    a[j]=t;
   }
  }//通過每次循環(huán),沉下去一個(gè)最大的數(shù)
 }//一種10個(gè)數(shù),沉下去9個(gè)最大的數(shù),就可以排序了
 for(i=0;i<10;i++){
  cout<<a[i]<<'/t';
 }
 cout<<endl;
 return 0;
}

分析:通過兩兩比較,第一次排序,會(huì)將最大的數(shù)88放到最后面a[9]中。。。。第九趟,a[1]=2,然后就排序完成

選擇排序法
原理:
選擇排序的基本思想是:每一趟在n-i+1(i=1,2,…n-1)個(gè)記錄中選取關(guān)鍵字最小的記錄作為有序序列中第i個(gè)記錄。

第i趟簡(jiǎn)單選擇排序是指通過n-i次關(guān)鍵字的比較,從n-i+1個(gè)記錄中選出關(guān)鍵字最小的記錄,并和第i個(gè)記錄進(jìn)行交換。共需進(jìn)行i-1趟比較,直到所有記錄排序完成為止。例如:進(jìn)行第i趟選擇時(shí),從當(dāng)前候選記錄中選出關(guān)鍵字最小的k號(hào)記錄,并和第i個(gè)記錄進(jìn)行交換。

示例代碼:

復(fù)制代碼 代碼如下:

#include<iostream> 
using namespace std;
int main(){
 //按照升序排列
 int a[10]={15,13,2,3,6,5,88,-3,30,40};
 int i,j,t,k=0;
 for(i=0;i<9;i++){
     k=i;
  for(j=i+1;j<10;j++){
      if(a[j]<a[k]){
       k=j;
      }     
  }
  t=a[k];
  a[k]=a[i];
  a[i]=t;
 }
 for(i=0;i<10;i++){
  cout<<a[i]<<'/t';
 }
 cout<<endl;
 return 0;
}

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 瓮安县| 柯坪县| 裕民县| 南京市| 灵山县| 延川县| 即墨市| 鸡泽县| 浦城县| 徐州市| 晴隆县| 安远县| 太白县| 广元市| 邮箱| 新巴尔虎右旗| 甘肃省| 信阳市| 中宁县| 大宁县| 海安县| 赤壁市| 清新县| 类乌齐县| 淮安市| 涟源市| 高雄县| 吐鲁番市| 祁连县| 桐庐县| 久治县| 石景山区| 大悟县| 永靖县| 卢龙县| 富顺县| 马关县| 兖州市| 佳木斯市| 景洪市| 黄冈市|