C語言例題19:折半插入排序
問題描述
折半插入排序
程式碼
#include<stdio.h>
#define N 1001
void InsertSort(int a[],int n);
int main(void) {
int n;
int a[N];
scanf("%d",&n);
for(int i=1; i<=n; i++) {
scanf("%d",&a[i]);
}
InsertSort(a,n);
for(int i=1; i<=n; i++) {
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
void InsertSort(int a[],int n) {
int i,j,low,high,mid;
for(i=2; i<=n; i++) {
a[0]=a[i]; //將a[i]暫存到a[0]
low=1;
high=i-1;
while(low<=high){ //折半查詢(預設遞增有序)
mid=(low+high)/2;//取中間點
if(a[mid]>a[0]) {
high = mid-1;//查詢左半區間
}else{
low = mid+1;//查詢右半區間
}
}
for(j=i-1; j>=high+1; --j) {
a[j+1]=a[j]; //統一後移元素 ,空出插入位置
}
a[high+1]=a[0]; //插入操作
}
}
執行結果
思想
相關文章
- C語言折半查詢C語言
- C語言字串例題C語言字串
- [java]插入排序及折半插入排序Java排序
- 【筆記】折半插入排序筆記排序
- 對c語言系統庫函式、堆排序、希爾排序、折半插入排序、快速排序消耗時間的比較C語言函式排序
- C語言例項解析精粹學習筆記——19C語言筆記
- 排序演算法__折半插入排序排序演算法
- 三種插入排序 直接插入排序,折半插入排序,希爾排序排序
- 題解1196:去掉空格 (C語言描述)C語言
- 排序演算法之折半插入排序排序演算法
- 【排序】插入類排序—(折半)插入排序、希爾排序排序
- 經典演算法之折半插入排序演算法排序
- 每日一題:C語言經典例題之雞兔同籠每日一題C語言
- 2019年c語言經典面試題目C語言面試題
- 題解1197:發工資咯 (C語言描述)C語言
- C語言的謎題C語言
- 1901:The C programming language !(C語言)C語言
- C語言——幾道習題C語言
- c語言程式設計題C語言程式設計
- 主元素問題(C語言)C語言
- C語言 C語言野指標C語言指標
- C語言---“C語言 誰與爭鋒?”C語言
- 刷題記錄(C語言)01C語言
- C語言結構體專題C語言結構體
- C語言解決排序問題C語言排序
- C語言的考試題型C語言
- C語言緩衝區問題C語言
- c語言金字塔問題C語言
- C語言模擬試題1C語言
- C語言模擬試題2C語言
- C語言模擬試題3C語言
- C語言模擬試題4C語言
- C語言模擬試題5C語言
- C語言模擬試題6C語言
- C 語言常見問題(轉)
- 16.C語言錯題整理C語言
- C語言趣味程式設計100例pdfC語言程式設計
- C語言C語言