2018-09-13第三次課

學(xué)寫簡書

c語言排序算法

兩種方法:選擇與冒泡

  • 選擇排序:
    首先在未排序序列中找到最?。ù螅┰?,存放到排序序列的起始位置,然后,再從剩余未排序元素中繼續(xù)尋找最?。ù螅┰兀缓蠓诺揭雅判蛐蛄械哪┪?。以此類推,直到所有元素均排序完畢。
    特點
    若按降序排列,第一次比較:則是將數(shù)組的第一個元素與數(shù)組中從第二個元素開始到最后的元素進行比較找到最大的數(shù)記錄下來然后將值賦值給數(shù)組的第一個元素,然后進行第二次比較:則是將數(shù)組的第二個元素與數(shù)組中從第三個元素開始到最后的元素進行比較,找最大的數(shù)記錄下來將值賦值給數(shù)組的第二個元素。。。依次循環(huán)找完。
    image.png

    代碼:
#include<stdio.h>
void SelectionSort(int *num,int n)
{
 int i = 0;
 int min = 0;
 int j = 0;
 int tmp = 0;
 for(i = 0;i < n-1;i++)
 {
    min = i;//每次講min置成無序組起始位置元素下標(biāo) 
    for(j = i;j < n;j++)//遍歷無序組,找到最小元素。 
      {
      if(num[min]>num[j])
          {
       min = j;
           }
        }
    if(min != i)//如果最小元素不是無序組起始位置元素,則與起始元素交換位置 
    {
      tmp = num[min];
      num[min] = num[i];
      num[i] = tmp;
    }
 }
}
 
int main()
{
 int num[6] = {5,4,3,2,9,1};
 int i = 0;
 SelectionSort(num,6);//這里需要將數(shù)列元素個數(shù)傳入。有心者可用sizeof在函數(shù)內(nèi)求得元素個數(shù)。 
 for(i = 0;i < 6;i++)
 {
   printf("%d ",num[i]);
 }
 return 0;
}

來源:
C語言選擇排序詳解及其實現(xiàn)

  • 冒泡排序:
    它重復(fù)地走訪過要排序的數(shù)列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數(shù)列的工作是重復(fù)地進行直到?jīng)]有再需要交換,也就是說該數(shù)列已經(jīng)排序完成。因為越大的元素會經(jīng)由交換慢慢“浮”到數(shù)列的頂端,故名“冒泡排序”。
    特點
  1. 比較相鄰的元素。如果第一個比第二個大,就交換它們兩個;
  2. 對每一對相鄰元素作同樣的工作,從開始第一對到結(jié)尾的最后一對,這樣在最后的元素應(yīng)該會是最大的數(shù);
  3. 針對所有的元素重復(fù)以上的步驟,除了最后一個;
  4. 重復(fù)步驟1~3,直到排序完成。
    image.png

    代碼:
#include<stdio.h>
#include<stdlib.h>
void bubblesort(int *p,int len)
{
int i = 0;
int j = 0;
for(i = 0;i<len-1;i++)
{
/*每排序一趟,則至少有一個元素已經(jīng)有序,
用 j<len-i-1 可以縮小排序范圍 */
for(j = 0;j<len -1-i;j++)
{
/*當(dāng)前面的元素大于后面的元素時,交換位置*/
if(p[j]>p[j+1])
{
int tmp = p[j];
p[j] = p[j+1];
p[j+1] = tmp;
    }
}
}
}
int main()
{
int num[5]={3,1,5,6,2};
int i=0;
bubblesort(num,5);
for(i=0;i<5;i++)
{
printf("%d ",num[i]);
}
return 0;
} 
printf("%d ",num[i]);
}
return 0;
} 

來源:
冒泡排序算法及其優(yōu)化

主函數(shù)為int main()中的內(nèi)容。

?著作權(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ù)。

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

  • 本文首發(fā)于我的個人博客:尾尾部落 排序算法是最經(jīng)典的算法知識。因為其實現(xiàn)代碼短,應(yīng)該廣,在面試中經(jīng)常會問到排序算法...
    繁著閱讀 4,686評論 3 118
  • 排序算法說明 (1)排序的定義:對一序列對象根據(jù)某個關(guān)鍵字進行排序; 輸入:n個數(shù):a1,a2,a3,…,an 輸...
    code武閱讀 758評論 0 0
  • 認識"簡書"緣于自己也曾想開創(chuàng)一個交流的平臺,前幾天剛畢業(yè)幾年的小姑娘A跟我談起工作后的迷茫,同時即將踏入婚姻圍城...
    techiezhang閱讀 150評論 0 0
  • 這篇文章最符合我當(dāng)下心境,分享下: 你觀察過天上的云嗎?你注意看,有時候云的形狀就好像一朵花,然后它開始改變,變成...
    丹靈雅音閱讀 164評論 0 0
  • 這一天,天還沒亮,遙遠的天空上還依稀有幾顆淡淡的星星,整個天空都黑乎乎的,樹林里漆黑一片,什么也看不見。松鼠爸爸睜...
    一葉蘭芷閱讀 1,041評論 0 3

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