最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語(yǔ)言選擇排序算法及實(shí)例代碼

 更新時(shí)間:2016年07月16日 16:01:10   投稿:lqh  
本篇文章主要介紹了 C語(yǔ)言選擇排序算法,這里提供代碼實(shí)例以便大家理解,通過(guò)本文,更好的理解排序算法

選擇排序是排序算法的一種,這里以從小到大排序?yàn)槔M(jìn)行講解。

基本思想及舉例說(shuō)明

選擇排序(從小到大)的基本思想是,首先,選出最小的數(shù),放在第一個(gè)位置;然后,選出第二小的數(shù),放在第二個(gè)位置;以此類推,直到所有的數(shù)從小到大排序。

在實(shí)現(xiàn)上,我們通常是先確定第i小的數(shù)所在的位置,然后,將其與第i個(gè)數(shù)進(jìn)行交換。

下面,以對(duì) 3  2  4  1 進(jìn)行選擇排序說(shuō)明排序過(guò)程,使用min_index 記錄當(dāng)前最小的數(shù)所在的位置。

第1輪 排序過(guò)程 (尋找第1小的數(shù)所在的位置)

3  2  4  1(最初, min_index=1)

3  2  4  1(3 > 2, 所以min_index=2)

3  2  4  1(2 < 4, 所以 min_index=2)

3  2  4  1(2 > 1, 所以 min_index=4, 這時(shí)候確定了第1小的數(shù)在位置4)

1  2  4  3 (第1輪結(jié)果,將3和1交換,也就是位置1和位置4交換)

第2輪 排序過(guò)程 (尋找第2小的數(shù)所在的位置)

1  2  4  3(第1輪結(jié)果, min_index=2,只需要從位置2開(kāi)始尋找)

1  2  4  3(4 > 2, 所以min_index=2)

1  2  4  3(3 > 2, 所以 min_index=2)

1  2  4  3(第2輪結(jié)果,因?yàn)閙in_index位置剛好在第2個(gè)位置,無(wú)需交換)

第3輪 排序過(guò)程 (尋找第3小的數(shù)所在的位置)

1  2  4  3(第2輪結(jié)果, min_index=3,只需要從位置2開(kāi)始尋找)

1  2  4  3(4 > 3, 所以min_index=4)

1  2  3  4(第3輪結(jié)果,將3和4交換,也就是位置4和位置3交換)

至此,排序完畢。

總結(jié)及實(shí)現(xiàn)

選擇排序?qū)Υ笮镹的無(wú)序數(shù)組R[N]進(jìn)行排序,進(jìn)行N-1輪選擇過(guò)程。第i輪選取第i小的數(shù),并將其放在第i個(gè)位置上。當(dāng)?shù)贜-1次完成時(shí),第N小(也就是最大)的數(shù)自然在最后的位置上。

下面給出選擇排序的C語(yǔ)言實(shí)現(xiàn)。

#include<stdio.h>
#include<stdlib.h>
#define N 8
void select_sort(int a[],int n);
//選擇排序?qū)崿F(xiàn)
void select_sort(int a[],int n)//n為數(shù)組a的元素個(gè)數(shù)
{
 //進(jìn)行N-1輪選擇
 for(int i=0; i<n-1; i++)
 {
  int min_index = i; 
  //找出第i小的數(shù)所在的位置
  for(int j=i+1; j<n; j++)
  {
   if(a[j] < a[min_index])
   {
    min_index = j;
   }
  }
  //將第i小的數(shù),放在第i個(gè)位置;如果剛好,就不用交換
  if( i != min_index)
  {
   int temp = a[i];
   a[i] = a[min_index];
   a[min_index] = temp;
  }
 }
}
int main()
{
 int num[N] = {89, 38, 11, 78, 96, 44, 19, 25};
 select_sort(num, N);
 for(int i=0; i<N; i++)
  printf("%d ", num[i]);
 printf("\n");
 system("pause");
 return 0;
}

以上就是對(duì)C語(yǔ)言選擇排序算法的詳解,有需要的朋友可以參考下。

相關(guān)文章

  • C++11?condition_variable條件變量的用法說(shuō)明

    C++11?condition_variable條件變量的用法說(shuō)明

    這篇文章主要介紹了C++11?condition_variable條件變量的用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • opencv 做人臉識(shí)別 opencv 人臉匹配分析

    opencv 做人臉識(shí)別 opencv 人臉匹配分析

    opencv 人臉識(shí)別通過(guò)級(jí)聯(lián)分類器對(duì)特征的分級(jí)篩選來(lái)確定是否是人臉,每個(gè)節(jié)點(diǎn)的正確識(shí)別率很高,但正確拒絕率很低,任一節(jié)點(diǎn)判斷沒(méi)有人臉特征則結(jié)束運(yùn)算,宣布不是人臉
    2012-11-11
  • C++虛繼承的實(shí)現(xiàn)原理由內(nèi)存布局開(kāi)始講起

    C++虛繼承的實(shí)現(xiàn)原理由內(nèi)存布局開(kāi)始講起

    為了解決多繼承時(shí)的命名沖突和冗余數(shù)據(jù)問(wèn)題,C++提出了虛繼承,使得在派生類中只保留一份間接基類的成員,下面我們從內(nèi)存布局看看虛繼承的實(shí)現(xiàn)原理
    2022-06-06
  • C/C++ 讀取16進(jìn)制文件的方法

    C/C++ 讀取16進(jìn)制文件的方法

    下面小編就為大家?guī)?lái)一篇C/C++ 讀取16進(jìn)制文件的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-12-12
  • C++STL之vector模板類詳解

    C++STL之vector模板類詳解

    這篇文章主要為大家詳細(xì)介紹了C++vector模板類,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • Qt 進(jìn)度條的實(shí)現(xiàn)示例

    Qt 進(jìn)度條的實(shí)現(xiàn)示例

    進(jìn)度條在很多時(shí)候都可以用到,有時(shí)我們需要在表格,樹(shù)狀欄中直觀顯示任務(wù)進(jìn)度或消耗百分比,本文就詳細(xì)的介紹一下Qt 進(jìn)度條的使用實(shí)例,感興趣的可以了解一下
    2021-06-06
  • 詳談全排列next_permutation() 函數(shù)的用法(推薦)

    詳談全排列next_permutation() 函數(shù)的用法(推薦)

    下面小編就為大家?guī)?lái)一篇詳談全排列next_permutation() 函數(shù)的用法(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • 詳解C語(yǔ)言中的動(dòng)態(tài)內(nèi)存管理

    詳解C語(yǔ)言中的動(dòng)態(tài)內(nèi)存管理

    對(duì)于數(shù)據(jù)的存儲(chǔ)我們可以靜態(tài)存儲(chǔ),也可以動(dòng)態(tài)存儲(chǔ),兩種方式都有自己特有的好處,這篇文章教我們?nèi)绾瓦M(jìn)行動(dòng)態(tài)的數(shù)據(jù)存儲(chǔ)!?。?!感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-12-12
  • Linux頁(yè)面置換算法的C語(yǔ)言實(shí)現(xiàn)

    Linux頁(yè)面置換算法的C語(yǔ)言實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了Linux頁(yè)面置換算法的C語(yǔ)言實(shí)現(xiàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • Objective-C中常用的結(jié)構(gòu)體NSRange,NSPoint,NSSize(CGSize),NSRect實(shí)例分析

    Objective-C中常用的結(jié)構(gòu)體NSRange,NSPoint,NSSize(CGSize),NSRect實(shí)例分析

    這篇文章主要介紹了Objective-C中常用的結(jié)構(gòu)體NSRange,NSPoint,NSSize(CGSize),NSRect實(shí)例分析,有助于更加直觀的理解Object-C常用的結(jié)構(gòu)體,需要的朋友可以參考下
    2014-07-07

最新評(píng)論

含山县| 桐柏县| 荃湾区| 叙永县| 郯城县| 襄汾县| 忻州市| 桂林市| 盘锦市| 乐至县| 舟曲县| 闵行区| 蓬安县| 松潘县| 阿巴嘎旗| 阆中市| 勐海县| 银川市| 巴中市| 谢通门县| 二连浩特市| 苍南县| 南昌市| 南城县| 抚远县| 昌吉市| 山西省| 沐川县| 雷州市| 牡丹江市| 商都县| 临城县| 乌拉特后旗| 常宁市| 北辰区| 陆河县| 尼勒克县| 太白县| 锡林郭勒盟| 安西县| 海城市|