排序之一:直接插入排序(C語言實現)
導語:C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。下面我們來看看直接插入排序(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;
}
-
2017年3月計算機二級C語言考試摸底測試題
以下是yjbys考試網小編整理的2017年3月計算機二級C語言考試摸底測試題,希望對大家有所幫助,祝大家計算機二級考試順利通過。一、選擇題(每小題1分。)(1)程序流程圖中帶有箭頭的線段表示的是()。A.圖元關係B.數據流C.控制流D.調用關係(2)結構化程序設計的基本原則...
-
C語言if else語句彙總
對於很多情況,順序結構的代碼是遠遠不夠的,大家都接觸過C語言吧,下面是小編為大家整理的C語言ifelse語句,希望對大家有所幫助。C語言ifelse語句在C語言中,使用if和else關鍵字對條件進行判斷。請先看下面的代碼:#includeintmain(){intage;printf("請輸入你的年齡:");sc...
-
C語言精選面試題詳解
C語言是IT編程中最基礎的語言,在面試中,基本可以忽略又或者格外重要。下面是小編為大家整理的C語言精選面試題詳解,歡迎參考~分析這些面試題,本身包含很強的趣味性;而作為一名研發人員,通過對這些面試題的深入剖析則可進一步增強自身的內功。試題1:以下是引用片段:voi...
-
2017年計算機二級考試C語言備考題及答案
計算機二級對於很多考生來説還是比較有難度的,那麼怎樣順利通過二級考試呢?這就需要大家平時多練習和找方法了。以下是本站小編整理的2017年計算機二級考試C語言備考題及答案,希望對大家有幫助!1.(A)是構成C語言程序的基本單位。A、函數B、過程C、子程序D、子例...