學計算機程式設計的應該都知道,演算法是程式之魂。所謂演算法,就是解決問題的方法加上有限的實現步驟。演算法的特點有有窮性,確定性,有效性,有零個或多個輸入,有乙個或多個輸出。下面我們就來簡單總結一下c語言中的三種經典排序演算法。
一、冒泡演算法。
所謂氣泡排序法,就是對一組數字進行從大到小或從小到大排序的一種演算法。具體方法是,相鄰的數字兩兩交換。從第乙個數值開始,如果相鄰兩個數的排列順序與我們的期望不相同,則將兩個數的位置進行交換(對調);如果其餘我們期望的相同,則不交換位置。重複這樣的過程,一直到最後沒有數值需要進項交換,則排序完成。
例項:#include
int main()
//氣泡排序
for(j=0;j<9;j++)} }
//迴圈輸出結果
for(i=0;i<10;i++)
return 0;
}二、選擇排序。
選擇排序的基本思路就是,在要排序的一組數中,選出最小的乙個數與第乙個位置的數交換,然後在剩下的數中再找出最小的數與第二個位置的數交換,如此迴圈,直到倒數第二個數與最後乙個數比較為止。
例項:#include
int main()
//選擇排序
for(j=0;j<10;j++)
}}
//迴圈輸出排序結果
for(i=0;i<10;i++)
return 0;
} 三、插入排序。
在進行插入排序之前必須保證被插入的那一組數是有序的(以從小到大為例),其基本思路就是,將要插入的數與被插入的數列中的每乙個數一次比較,直到這個插入的數大於數列中的前乙個數並且小於或等於數列中的後乙個數,記下這個位置,然後將此位置後的數一次向後移動,為要插入的數騰出位置,最後將要插入的數放到騰出的位置上完成排序。
例項:#include
int main()
;//定義乙個變數儲存輸入的數
int num;
//定義兩個變數控制迴圈
int i,j;
//定義乙個變數儲存索引
int index=9;
//提示輸入
printf("請輸入乙個數:\n");
scanf("%d",&num);
//插入排序
for(i=0;i<9;i++)
//將要插入的數放到騰出的位置上
arr[index]=num;
//迴圈輸出排序結果
for(i=0;i<10;i++)
return 0;
}以上就是我對c語言中常用的三種經典演算法的總結,希望對各位在學c語言排序演算法的小夥伴有幫助。
C語言排序演算法總結
排序演算法一直都是讓我頭疼的演算法。為了全面掌握排序演算法,我就整理了常用的排序演算法。首先我們來了解一些基本概念 1 穩定排序和非穩定排序 簡單地說就是所有相等的數經過某種排序方法後,仍能保持它們在排序之前的相對次序,我們就 說這種排序方法是穩定的。反之,就是非穩定的。比如 一組數排序前是a1,a...
排序演算法總結(C語言)
總結包括 氣泡排序 選擇排序 插入排序 希爾排序 堆排序 歸併排序 快速排序 桶排序 氣泡排序是從後往前 或從前往後 比較相鄰的兩個元素,如果有逆序則交換他們。這樣每趟就將最小 或最大 元素移到待排元素的一端。最多n 1趟,就可以把所有元素排好序。時間複雜度 最好情況 最壞情況 額外空間複雜度 穩定...
C語言排序演算法總結 希爾排序
之前我們總結了比較簡單的幾種排序方法。冒泡,選擇,排序。但是也提到了這些排序方法的缺陷。時間複雜度太高,在有大量資料需要排序的時候,會需要浪費太多的時間。所以在很多場景中是不適合使用。我們這次總結一種時間複雜度更優秀的希爾排序。希爾排序是以插入排序為基礎的改進版本。是由shell提出的方法。所以就叫...