程式設計實現插入排序函式。void insertionsort(int arr, int n);。其中arr存放待排序的資料,n為陣列長度(1≤n≤1000)。
函式介面定義如下:
/* 對長度為n的陣列arr執行插入排序 */
void
insertionsort
(int arr,
int n)
;
請實現insertionsort函式,使排序後的資料從小到大排列。
裁判測試程式樣例:
#include
#define n 1000
int arr[n]
;/* 對長度為n的陣列arr執行插入排序 */
void
insertionsort
(int arr,
int n)
;/* 列印長度為n的陣列arr */
void
printarray
(int arr,
int n)
;int
main()
insertionsort
(arr, n)
;printarray
(arr, n)
;return0;
}/* 列印長度為n的陣列arr */
void
printarray
(int arr,
int n)
printf
("\n");
/* 一行列印完後換行 */
}/* 你的**將嵌在這裡 */
輸入樣例:1 19 9 11 4 3 5 8 10 6
輸出樣例:由於只允許用c語言進行答題,不能用algorithm標頭檔案的sort來偷雞,但是這不代表我大c就沒有乙個排序函式了啊(狗頭)1 3 4 5 6 8 9 10 11 19
作業偷雞第一人
#include
intcmp_int
(const
void
* _a,
const
void
* _b)
void
insertionsort
(int arr,
int n)
c語言stdlib標頭檔案下自帶排序函式,可以對陣列進行排序,這就是qsort函式(全稱quicksort)。它是ansi c標準中提供的,其宣告在stdlib.**件中,是根據二分法寫的,其時間複雜度為n*log(n)。
void
qsort
(void
* base,size_t num,size_t width,
int(__cdecl*compare)
(const
void*,
const
void*)
);
其中引數
1 待排序陣列,排序之後的結果仍放在這個陣列中
2 陣列中待排序元素數量
3 各元素的占用空間大小(單位為位元組)
4 指向函式的指標,用於確定排序的順序(需要使用者自定義乙個比較函式)
因為標準c不支援函式過載,因此引數都需要寫上,其中的順序規則函式比較常見的有:
int num[
100]
;int
cmp_int
(const
void
* _a ,
const
void
* _b)
char word[
100]
;int
cmp_char
(const
void
* _a ,
const
void
* _b)
double in[
100]
;int
cmp_double
(const
void
* _a ,
const
void
* _b)
char word[
100][10
];intcmp_string
(const
void
* _a ,
const
void
* _b)
//引數格式固定
qsort
(word,
100,
sizeof
(word[0]
),cmp_string)
;
qsort部分出處 插入排序 簡單插入排序 二分插入排序
1 假設我們手裡的數字是一堆亂序撲克牌,我們想把它整理成從小到大的排序,會怎麼辦呢,我們會從左往右挨個將牌抽出來插到它合適的位置,這樣一輪之後,就變成從小到大的順序了。2 程式上怎麼實現,從第二位開始,逐個將後乙個數和它之前所有的資料進行比較,尋找這個數最合適的插入位置,將其插入空隙,後面的值依次會...
插入排序 直接插入排序 二分插入排序 希爾排序
選擇排序是一種較為簡單的排序演算法。它的實現原理是每一次從待排序的資料元素中挑出乙個最小 大 的元素,存放在資料的起始 末尾 位置,直到所有待排序的資料排完。直接插入排序 當插入第i個元素的時候,我們認為它前面的i個元素已序。這時候用array i 的排序嗎與前面的排序碼進行比較,找到適合的位置就進...
插入排序 折半插入排序
折半插入排序 binary insertion sort 直接插入排序採用順序查詢法查詢當前記錄在已排好序的序列中插入位置,這個 查詢 操作可利用 折半查詢 來實 現,由此進行的插入排序稱之為折半插入排序 binary insertion sort 演算法思想 1 將待排序的記錄存放在陣列r 1.n...