亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

c語(yǔ)言三種排序方法 c語(yǔ)言選擇排序法代碼


c語(yǔ)言三種排序方法 c語(yǔ)言選擇排序法代碼

文章插圖
選擇排序,從字面上來(lái)說(shuō),就是要把一組數(shù)列中的元素給選擇出來(lái) 。
比方說(shuō)給定一組數(shù)列,要求把其中的元素進(jìn)行從小到大排序,那么只需要在進(jìn)行每次排序的時(shí)候,都把最小的元素給選擇出來(lái),放在數(shù)列的第一位即可,第二次排序第三次排序同理,把后面數(shù)列中的最小元素給選擇出來(lái),放在已經(jīng)排序好的元素的末尾,直到最后需要排序的元素沒(méi)有為止 。
這里有幾個(gè)注意點(diǎn):
1、第一次排序是遍歷整個(gè)數(shù)列,把最小的元素給選擇出來(lái)放在第一位 。
2、第二次排序開(kāi)始是遍歷除了第一個(gè)元素外的后面的數(shù)列,把后面數(shù)列當(dāng)中最小的元素給選擇出來(lái)放到第一個(gè)元素后面一位 。
3、第三次排序同理,直到最后一次排序把整個(gè)數(shù)列以從小到大的方式打印出來(lái) 。
可以發(fā)現(xiàn),在進(jìn)行選擇排序的過(guò)程中,每次最為重要的就是選擇出一個(gè)最小的元素然后進(jìn)行排序 。
理清邏輯,畫(huà)好流程圖為了讓整個(gè)流程更加清晰,我畫(huà)了一張流程圖,也能在以后來(lái)幫助自己理解 。
這里最容易搞混的地方,我在自己寫(xiě)代碼理邏輯的時(shí)候也容易出現(xiàn)問(wèn)題,那就是這個(gè)交換位置到底應(yīng)該放在哪邊,所以,為了講的更清楚一些,我打算用實(shí)際例子來(lái)舉例一下 。
外循環(huán)是遍歷數(shù)組中所有的元素,內(nèi)循環(huán)是遍歷除了當(dāng)前元素的所有元素,然后要進(jìn)行一個(gè)條件判斷,也就是找出最小的元素,之后與當(dāng)前元素交換位置 。
那么內(nèi)循環(huán)進(jìn)行遍歷的時(shí)候,可能會(huì)遍歷到許多個(gè)比當(dāng)前元素要小的元素,如果在這里進(jìn)行位置交換,那豈不是就會(huì)交換好多次,與我們期望的不符,所以交換位置不能放在內(nèi)循環(huán)里 。
所以邏輯應(yīng)該改為:在進(jìn)行完內(nèi)循環(huán)后,把最小元素給選擇出來(lái),然后再交換位置 。
代碼實(shí)現(xiàn)://選擇排序#include<stdio.h>int main() {int Select[9] = {100, 3, 7, 6, 55, 29, 33, 10, -12};int Temp = 0;int index = 0;for(int i = 0; i < 9; i++){index = i;for(int j = i+1; j<9;j++){if(Select[j]<Select[index]){index = j;}}Temp = Select[i];Select[i] = Select[index];Select[index] = Temp;for(int i = 0; i < 9; i++){printf("%d ", Select[i]);}printf("n");}}大家可以看到,交換位置的邏輯與冒泡排序和直接插入排序交換位置的邏輯并無(wú)多大差別,無(wú)非這里要進(jìn)行交換位置的時(shí)候必須得把最小元素給選擇出來(lái)再交換位置,而不是找到一個(gè)最小元素就直接交換位置 。
測(cè)試結(jié)果
總結(jié)總的來(lái)說(shuō),選擇排序其實(shí)難度不大,但是如果剛開(kāi)始學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的話,的確會(huì)有些不清楚,最重要的就是要理清邏輯,理清邏輯之后,因?yàn)閮?nèi)循環(huán)的主要目的是找到最小元素,如果在內(nèi)循環(huán)中交換位置的話,那就沒(méi)有意義了,所以要在內(nèi)循環(huán)外交換位置 。
總的來(lái)說(shuō),難度不大,測(cè)試結(jié)果也與我們最終期望得到的結(jié)果相同 。


    以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問(wèn)題,請(qǐng)您及時(shí)就醫(yī)或請(qǐng)專(zhuān)業(yè)人士給予相關(guān)指導(dǎo)!

    「愛(ài)刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對(duì)您有所幫助: