直接插入排序(C語言實現)
直接插入排序方法:僅有一個記錄的表總是有序的,因此,對於有n個記錄的表,可以從第二個記錄開始直到第n個記錄逐個有序的向有序表中進行插入操作,從而得到n個記錄按關鍵字有序的表。下面一起跟着小編學習一下吧!
實現一個直接插入排序的`C語言函數,要求對要排序的元素按照逐漸遞增有序。這個函數的具體實現如下:
/* 直接插入排序函數的實現
* array[] : 待排序的數組
* length : 待排序的數組的大小
*/
void ion_sort(int array[], int length)
{
int i, j;
int temp; // 用來存放臨時的變量
for(i = 1; i < length; i++)
{
temp = array[i];
for(j = i-1; (j >= 0)&&(array[j] > temp); j--)
{
array[j + 1] = array[j];
}
array[j + 1] = temp;
}
}
編寫測試代碼如下所示:
/* 程序的入口函數 */
int main()
{
int a[ARRAY_LENGTH];
int i;
int d[3] = {5, 3, 1}; // 定義一個表示增量值的數組
/* 輸入10個整形元素 */
printf("Input %d numbers :", ARRAY_LENGTH);
for(i = 0; i < ARRAY_LENGTH; i++)
{
scanf("%d", &a[i]);
}
printf("****************************************************************");
/* 把排序前元素都打印出來 */
printf("The elements before sort is :");
for(i = 0; i< ARRAY_LENGTH; i++)
{
printf("%d ", a[i]);
}
printf("");
printf("****************************************************************");
/* 對元素進行有小到大的直接插入排序 */
ion_sort(a, ARRAY_LENGTH);
/* 把排序後元素都打印出來 */
printf("The elements after sort is :");
for(i = 0; i < ARRAY_LENGTH; i++)
{
printf("%d ", a[i]);
}
printf("");
return 0;
}
編譯並運行結果如下所示:
-
關於C語言精選模擬練習題
C語言是一個有結構化程序設計、具有變量作用域(variablescope)以及遞歸功能的過程式語言。下面是小編為大家整理的關於C語言精選模擬練習題,歡迎參考~5:請編寫一個函數fun,它的功能是:比較兩個字符串的長度,(不得調用c語言提供的`求字符串長度的函數),函數返回較長...
-
C語言中文件操作詳解及實例代碼
在文件操作中除了打開操作以及讀寫操作,還有幾種比較常見的操作。以下是本站小編搜索整理的關於這些操作中涉及到的函數,,需要的朋友可以參考本文!想了解更多相關信息請持續關注我們應屆畢業生考試網!一.移動位置指針的函數rewind函數和fseek函數,這兩個函數的原...
-
計算機二級C語言上機程序填空題
考慮到一部分同學的計算機二級C語言程序填空題基礎比較薄弱,為此本站小編為大家整理了計算機二級C語言上機程序填空題,希望能夠幫助到同學們。一、程序填空題1、給定程序中,函數fun的功能是根據形參i的值返回某個函數的值。當調用正確時,程序輸出:x1=5.000000,x2=3...
-
C語言插入排序算法及實例代碼
插入排序是排序算法的一種,下面小編為大家整理了C語言插入排序算法及實例代碼,希望能幫到大家!這裏以從小到大排序為例進行講解。基本思想及舉例説明插入排序的基本思想是,將元素逐個添加到已經排序好的數組中去,同時要求,插入的元素必須在正確的位置,這樣原來排序好...