【C】選擇排序與冒泡排序區別及其過程

前言

在最初的剛接觸排序的時候,起初我確實只是簡單的能寫出過程,但是卻沒有詳細的去了解選擇與冒泡排序之間的區別。后來用代碼測試驗證后,才明白兩者的區別。

選擇排序

選擇排序(Selection sort)是一種簡單直觀的排序算法。它的工作原理是每一次從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的數據元素排完。

通俗的講就是,每一次循環,都是拿當前索引去挨個比,找出最值,放大此索引中。如果有2個數,需要循環1次,如果有N個數,需要循環N-1次。代碼如下:

int nums[10]={100,34,288,1,199,199,288,0,10,3};
int lenth = sizeof(nums) / sizeof(nums[0]);
for (int i = 0; i < lenth-1; i++) {
    for (int j = i+1; j < lenth; j++) {
        if (nums[i]<nums[j]) {
            int temp = nums[i];
            nums[i] = nums[j];
            nums[j] = temp;
        }
    }
    printf("第%i比較后 \n",i+1);
    for (int m = 0; m<lenth; m++) {
        printf("%i    ",nums[m]);
    }
    
    printf("\n\n");
}

 printf("排序結果為:\n");
for (int i = 0; i<lenth; i++) {
     printf("%i   ",nums[i]);
}
printf("\n\n");
}

以上就是選擇排序,結果可自行打印就可清晰看到整個過程了。

冒泡排序

冒泡排序(Bubble Sort),是一種計算機科學領域的較簡單的排序算法。
它重復地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重復地進行直到沒有再需要交換,也就是說該數列已經排序完成。代碼如下:

int nums[4]={100,34,288,1};
int lenth = sizeof(nums) / sizeof(nums[0]);
for (int i=0; i < lenth-1; i++) {
    for (int j = 0; j < lenth - 1 - i; j++) {
       // printf("%i----%i\n",j,j+1);
        if (nums[j] > nums[j+1]) {
            int temp = nums[j];
            nums[j] = nums[j+1];
            nums[j+1] = temp;
        }
        
        
    }
    
    printf("第%i次排序后:",i+1);
    for (int i = 0; i<lenth; i++) {
        printf("%i  ",nums[i]);
    }
    printf("\n");
}

printf("最終的排序結果\n\n");
for (int i = 0; i<lenth; i++) {
    printf("%i  ",nums[i]);
}

以上就是冒泡排序,過程也可自行進行打印。

控制臺輸出

當然排序的算法還有很多種,后續再繼續測試說明快速排序。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 總結一下常見的排序算法。 排序分內排序和外排序。內排序:指在排序期間數據對象全部存放在內存的排序。外排序:指在排序...
    jiangliang閱讀 1,377評論 0 1
  • 寫在前邊:這篇文章又臭又長,純屬個人無聊總結之作,如果您恰好看見了,有恰好有興趣,建議您找個空閑時間閱讀。 [TO...
    John_Tsemin閱讀 2,551評論 2 5
  • Ba la la la ~ 讀者朋友們,你們好啊,又到了冷鋒時間,話不多說,發車! 1.冒泡排序(Bub...
    王飽飽閱讀 1,815評論 0 7
  • 新鄉學院 愛是一種微妙的滋養 人生在世,總會遇到各種各樣的事情,愛便是其中之一。愛是一個泛指,愛包括很多,...
    葬月仙閱讀 1,007評論 0 0
  • 每日必讀:12條人生原則 1. 早睡早起——晚不超過23:30,早不晚于5:00,醒后不睡回籠覺。 2. 謹言——...
    衡山閱讀 338評論 0 1