程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 用C++的基本算法實現十個數排序

用C++的基本算法實現十個數排序

編輯:C++入門知識

冒泡排序法
原理:
它重復地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重復地進行直到沒有再需要交換,也就是說該數列已經排序完成。

冒泡排序算法的運作如下:
比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
針對所有的元素重復以上的步驟,除了最後一個。
持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。
示例代碼:
[cpp]
#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; 
            } 
        }//通過每次循環,沉下去一個最大的數   
    }//一種10個數,沉下去9個最大的數,就可以排序了   
    for(i=0;i<10;i++){ 
        cout<<a[i]<<'\t'; 
    } 
    cout<<endl; 
    return 0; 

#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;
   }
  }//通過每次循環,沉下去一個最大的數
 }//一種10個數,沉下去9個最大的數,就可以排序了
 for(i=0;i<10;i++){
  cout<<a[i]<<'\t';
 }
 cout<<endl;
 return 0;
}

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

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

第i趟簡單選擇排序是指通過n-i次關鍵字的比較,從n-i+1個記錄中選出關鍵字最小的記錄,並和第i個記錄進行交換。共需進行i-1趟比較,直到所有記錄排序完成為止。例如:進行第i趟選擇時,從當前候選記錄中選出關鍵字最小的k號記錄,並和第i個記錄進行交換。


示例代碼:


[cpp]
#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; 

#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;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved