排序算法:選擇排序

1、環(huán)境配置:

  • 系統(tǒng):win10
  • 編程語(yǔ)言:C++
  • 編譯器:DevC++

2、算法思想:

找到一個(gè)最小(最大)的放到第一位,然后從剩下的當(dāng)中繼續(xù)找最?。ㄗ畲螅┑姆诺降诙?。

3、代碼:

#include<iostream>

using namespace std;

void sort(int n,int a[]);

//主函數(shù) 
int main()
{
   int A[] = {5,4,3,2,1};
   for(int v=0; v<sizeof(A)/sizeof(A[0]); v++){
    cout<<A[v]<<",";
   }
   
   cout<<""<<endl;
   
   sort(sizeof(A)/sizeof(A[0]),A); 
   
   for(int v=0; v<sizeof(A)/sizeof(A[0]); v++)
   {
    cout<<A[v]<<",";
   } 
   return 0;
}


//選擇排序函數(shù) 
void sort(int n,int a[])
{
    if(sizeof(a) < 1){
        cout<<"empty arry";
    }
    for(int i=0 ; i<n ; i++){
        //從i到最后一項(xiàng)中找最小項(xiàng)對(duì)應(yīng)的下標(biāo) 
        int min = a[i];
        int z = i;
        for(int m = i ; m < n ; m++){
            if(min > a[m]){
                min = a[m];
                z = m;
            }
        }   
        //將首項(xiàng)和最小數(shù)交換
        int sw = 0;
        sw = a[z];
        a[z] = a[i];
        a[i] = sw;
    } 
 
}

4、結(jié)果展示:

結(jié)果.png

5、反思總結(jié):

//從i到最后一項(xiàng)中找最小項(xiàng)對(duì)應(yīng)的下標(biāo) 
        int min = a[i];
        int z = 0;
        for(int m = i ; m < n ; m++){
            if(min > a[m]){
                min = a[m];
                z = m;
            }
        }   

在測(cè)試當(dāng)中這段代碼出了問(wèn)題,原因就是z的初始值問(wèn)題,如果存在比a[i]小的項(xiàng),那么z在for循環(huán)中會(huì)被替換,但是如果不存在比a[i]小的項(xiàng),比如所有項(xiàng)目都是排好序的,那么for循環(huán)當(dāng)中的條件語(yǔ)句就不會(huì)執(zhí)行,z值也就不會(huì)改變,如果一開(kāi)始給z賦值是0,就會(huì)出現(xiàn)問(wèn)題。

最后編輯于
?著作權(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ù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 同樣的先上百度百科 --選擇排序(Selection sort)是一種簡(jiǎn)單直觀的排序算法。它的工作原理是每一次從待...
    夏天的夏秋天的天閱讀 171評(píng)論 0 0
  • 選擇排序算法是一種原址比較排序算法。選擇排序大致的思路是找到數(shù)據(jù)結(jié)構(gòu)中的最小值并將其位置放置第一位,接著找到第二小...
    DHFE閱讀 290評(píng)論 0 0
  • 選擇排序找到數(shù)組中最小的元素,然后將它和數(shù)組的第一個(gè)元素交換位置(如果第一個(gè)元素就是最小的元素就自己和自己交換)。...
    耶也夜閱讀 135評(píng)論 0 0
  • 典型排序問(wèn)題 我們?cè)趯?shí)際生活中可能會(huì)遇到各種各樣的排序問(wèn)題,比如:對(duì)學(xué)生信息進(jìn)行排序,信息可能有學(xué)號(hào),成績(jī),電話等...
    芳仔小腳印閱讀 1,072評(píng)論 0 0
  • 剛剛寫(xiě)完了冒泡排序,激動(dòng)的我停不下來(lái),然后馬上看了選擇排序。發(fā)現(xiàn)果然踩過(guò)前面的坑之后,現(xiàn)在自己學(xué)起來(lái)會(huì)快很多。所以...
    noonbiteun閱讀 559評(píng)論 0 1

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