一些常用演算法 排序

2021-09-04 13:21:28 字數 1469 閱讀 5678

1.冒泡法

(1)比較第乙個數和第二個數,若為逆序a[0]>a[1],則交換,以此類推;直到第n-1個數和第n個數比較完為止;第一次氣泡排序,結果最大的數被安置在最後乙個元素位置上。

(2)對前n-1個數進行第二次氣泡排序,結果使次大的數被安置在n-1的位置上。

(3)重複上述過程,經過n-1次氣泡排序後,排序結束。

#include

int main()

printf(「the sorted numbers:」);

for(i=0;i<10;i++)

printf("%d ",a[i]);

}2,選擇法

(1)從陣列存放的n個數中找出最小的下標,然後將最小數與第乙個數交換位置。

(2)除第乙個數外,再從其餘的n-1個數中找出最小數的下標,將此數與第二個數交換位置。

(2)重複步驟(1)n-1次,即完成所求。

#include

int main()

printf("\n");

printf(「the orginal numbers:\n」);

for(i=1;i<=10;i++)

printf("%5d",a[i]);//輸出這十個數

printf("\n");

for(i=1;i<=9;i++)

printf("\nthe sortd numbers:\n");

for(i=1;i<=10;i++)

printf("%5d",a[i]);

printf("\n");

return 0;

}3.把乙個整數按大小順序插入已排好序的陣列中

假設陣列a有n個元素,而且已按公升序排列

(1)如果插入的數num比a陣列最後乙個數大,則將插入的數放在a陣列末尾

(2)如果插入的數num不比a陣列最後乙個數大,則將它依次和a[0]~a[n-1]比較,直到出現a[i]>num為止,這時表示a[0]-a[i-1]各元素的值比num大。

(3)num理應插到a[i-1]之後,a[i]之前。將a[i]~a[n-1]各元素向後移(即a[i]變成a[i+1],…a[n-1]變成a[n]。然後將num放在a[i]中。

#include

int main()

;int i,j,k;

printf(「輸入陣列:\n」);

for(i=0;i<6;i++)

printf("%5d",a[i]);

printf("\n");

printf(「插入乙個數:k\n」);

scanf("%d",&k);

a[6]=k;

for(i=0;i<7;i++)

for(j=0;j<6;j++)

}printf(「當前陣列為:\n」);

for(i=0;i<7;i++)

printf("%5d",a[i]);

printf("\n");

return 0;

}

一些常用的排序演算法

排序演算法 插入排序 直接插入排序 折半排序 希爾排序 交換排序 氣泡排序 快速排序 選擇排序 簡單選擇排序 堆排序 歸併排序 分配排序 箱排序 基數排序 author kevin public class sorting else break 折半排序,降序 在乙個有序的子檔案中,用折半查詢方法查...

常用的一些排序演算法

整理一下各種排序演算法 1.氣泡排序 時間複雜度o n 2 時間比較長,但是比較容易理解和實現。氣泡排序 public int sortarray int nums return nums 2.快速排序 選定乙個基準值 一般是陣列的第乙個值 一次把比基準小的數字放在左邊,比基準大的數字放在右邊。然後...

常用的一些排序演算法(C 實現)

常用的排序演算法有氣泡排序,選擇排序,插入排序,歸併排序 希爾排序,堆排序等 1 冒泡 氣泡排序就是像旗袍一樣,最大的值逐漸上浮,我的實現方法是採用遞迴的,當然也可以不用遞迴 void bubblesort2 int array,int length if index length 1 bubble...