C語言中排序方法的使用

C語言中排序方法

學習目的

今天我們學習了三種排序方法:冒泡排序法、選擇排序法、插入排序法。

相關(guān)技術(shù),及其實用

為什么會使用排序:
為了是想同類型的不同數(shù)據(jù)按照想要的順序輸出。
怎么用:
冒泡法、選擇法、插入法
冒泡排序法:通過一次排序,使最大的沉底。例如:

    int num[] = { 3,0,1,8,7,2,5,4,9 };
    for (int i = 0; i < 10; i++) {//外層循環(huán) 比較的次數(shù)
        for (int j = 0; j < 10- i-1; j++) {//內(nèi)層循環(huán) 如何比較
            if (num[j] > num[j + 1]) {
                //交換j 和j+1 的值
                int temp = num[j+1];
                num[j + 1] = num[j];
                num[j] = temp;
            }

        }
  }

選擇排序:一次取出一個值,默認他是最小的,如果發(fā)現(xiàn)不是這個數(shù)最小就交換,便利整個數(shù)組,找到一個最小的。例如:

int num[] = { 3,0,1,8,7,2,5,4,9 };
for (int i = 0; i < 10 - 1; i++) {
        //默認這是最小的
        
        for (int j = i + 1; j < 10 - 1; j++) {
            //控制用min和后面的每一個進行比較
            if (num[i] > num[j]) {
                //j對應的數(shù)字比min還小 交換
                int temp = num[i];
                num[i] = num[j];
                num[j] = temp;

            }
        }
        //一次遍歷后找到最小的值
    }

插入排序:取出一個數(shù),把他從開始到最后一直比較,比較合適就插進去,進行排序、邊插邊排。例如:

//插入排序法
        //尋找這個數(shù)字對應的位置
        int j = 0;
        for (; j < i; j++) {
            //j對應的數(shù)字和產(chǎn)生的數(shù)字進行比較
            if (temp < originalArray[j]) {
                //j后面的內(nèi)容往后移動 騰出空間

                for (int k = i; k > j; k--) {
                    originalArray[k] = originalArray[k - 1];
                }
                break;
            }
        }
        //保存到數(shù)組里面去
        originalArray[j] = temp;
    }

同時,可以看出數(shù)組在排序方法里面的缺點:雖然訪問方便,但插入和刪除效率不高。

感想

雖然學習了這三種排序方法知道了一些用法,但是,當要運用這些方法時,就感覺一臉懵,不知道選擇哪種排序方法更加的簡便,還是不夠清楚明了。同時呢,在邏輯思維方面還出現(xiàn)很大的不足,拿到一個demo只知道有具體有那幾個大部分,但是在大部分里面就不知道如何去實現(xiàn)。比如:在具體實現(xiàn)時,就拿猜數(shù)字的demo 來說,當寫到如何實現(xiàn)怎么進行移動時,具體的代碼如何實現(xiàn)就是一臉懵,難啊。

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

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