C語言 排序(1) 氣泡排序 插入排序

2021-09-26 20:01:50 字數 764 閱讀 4858

1.氣泡排序:想象乙個大泡泡從上面往下掉,一直掉到比它更大的元素停止。也就是說從第乙個元素開始,比較它與第二個元素的大小,如果比第二個元素大則交換位置,否則保持不變,繼續與第三個元素比較,一直到最後乙個。這是第一輪排序;第二輪從第乙個元素出發,一直比較到倒數第2個,依次類推。

void swap(int *a,int *b)

void bubble_sort(int a,int n)//想象乙個大泡泡向下掉

}if(flag==0)

}}

2.插入排序:想象打撲克牌的過程,首先拿到第一張牌,拿到第二張牌之後與第一張比較大小,如果比第一張大,則放在第一張後面,否則把第一張後移乙個位置,然後把第二張放在第一張的位置,拿到第三張牌也是如此..

void insertion_sort(int a,int n)

a[j]=tmp;

}}

如果序列基本有序,使用插入排序會十分高效。

3.逆序對

對於下標ia[j],則為一對逆序對。逆序對的個數就是插入排序和冒牌排序交換元素的次數。

比如: 有9個逆序對。

(34, 8) (34, 32) (34, 21) (64, 51) (64, 32) (64, 21) (51, 32) (51, 21) (32, 21)

4.總結

可以看出,以上兩種簡單排序都是基於交換2個相鄰元素而完成的,所以提公升排序,就需要從交換多個元素以及間隔更大入手。 

C語言 氣泡排序,選擇排序,插入排序

利用順序表進行三種排序 1,氣泡排序 void bubblessort seqlist seq 氣泡排序 2,選擇排序 void selectsort seqlist seq 選擇排序 swap seq array begin seq array min index if begin max ind...

C語言 氣泡排序,選擇排序,插入排序,堆排序

氣泡排序 穩定排序 冒泡 void bubblesort int arr,int len int bound 0 for bound len bound 選擇排序 打擂台 選擇排序 void selectsort int arr,int len int bound 0 for bound len b...

氣泡排序,插入排序

前提 void x sort elementtype a,int n 大多數情況下,為簡單起見,討論從小大的整數排序 n是正整數 只討論基於比較的排序 有定義 只討論內部排序 穩定性 任意兩個相等的資料,排序前後的相對位置不發生改變 沒有一種排序是任何情況下 都表現最好的 氣泡排序 void bub...