簡(jiǎn)單排序算法

剛學(xué)c++,利用兩種間的排序算法來(lái)練練手0.0
1.冒泡法排序

#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
int main(){
    int n_array[] = {7,2,1,4,6};
    int i,j;
    int temp = 0;
    int len = sizeof(n_array)/sizeof(n_array[0]);
    cout<<"數(shù)組長(zhǎng)度為"<<len<<endl;
    for(i=0;i<len;i++){
        for (j=0;j<len-i-1;j++){
            if(n_array[j]>n_array[j+1]){
                temp = n_array[j];
                n_array[j] = n_array[j+1];
                n_array[j+1] = temp;
        }
      }
    }
    cout<<"數(shù)組順序排列為"<<endl;
    for(i=0;i<len;++i){
        cout<<n_array[i]<<endl;
    }
}

2.快速排序

#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
int main(){
    int n_array[] = {7,2,1,4,6};
    int i,j,min_index;
    int temp = 0;
    int len = sizeof(n_array)/sizeof(n_array[0]);
    cout<<"數(shù)組長(zhǎng)度為"<<len<<endl;
    for(i=0;i<len;i++){
        min_index = i;
        for (j=i+1;j<len;j++){
            if(n_array[min_index]>n_array[j]){
                min_index = j;
           }
        }
        if (min_index!=i){
            temp = n_array[i];
            n_array[i] = n_array[min_index];
            n_array[min_index] = temp;
        }
    }
    cout<<"數(shù)組順序排列為"<<endl;
    for(i=0;i<len;++i){
        cout<<n_array[i]<<endl;
    }
}

總結(jié)以下兩種算法的思路不同點(diǎn):

冒泡法:每次比較的時(shí)候某一個(gè)位置的數(shù)只比較一次,且都在相鄰兩個(gè)數(shù)之間進(jìn)行比較,找到最大值(或最小值),通過(guò)冒泡的方式實(shí)現(xiàn)。
選擇排序:第一個(gè)循環(huán)里假設(shè)第一個(gè)位置的數(shù)為最小值,依次與其他的位置的數(shù)進(jìn)行比較,如果有小于當(dāng)前的位置的數(shù),則兩個(gè)數(shù)交換位置,從而確定第一個(gè)最小值,緊接著假定當(dāng)前的第二個(gè)數(shù)為出去第一個(gè)最小值的情況下的最小值,第二個(gè)循環(huán)將第二個(gè)數(shù)分別與后續(xù)的參數(shù)分別進(jìn)行比較,如果有小于第二個(gè)位置數(shù)的則進(jìn)行數(shù)據(jù)交換,從而確定第二小的值。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容