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語言例項解析精粹學習筆記——19C語言筆記
- C語言_入門例題_PAGE1C語言
- 排序演算法__折半插入排序排序演算法
- 排序演算法之折半插入排序排序演算法
- 三種插入排序 直接插入排序,折半插入排序,希爾排序排序
- 每日一題:C語言經典例題之雞兔同籠每日一題C語言
- 【排序】插入類排序—(折半)插入排序、希爾排序排序
- C語言趣味程式設計100例pdfC語言程式設計
- c語言程式設計題C語言程式設計
- 主元素問題(C語言)C語言
- 16.C語言錯題整理C語言
- C語言解決排序問題C語言排序
- 刷題記錄(C語言)01C語言
- C語言結構體專題C語言結構體
- C語言的考試題型C語言
- 【乾貨】200個c語言例項的yuan碼C語言
- 程式設計中的遞迴(C語言為例)程式設計遞迴C語言
- C語言C語言
- 題解1196:去掉空格 (C語言描述)C語言
- C語言常見使用問題2C語言
- C語言考試題及答案(一)C語言
- C語言指標常見問題C語言指標
- 【C語言練習題】小球反彈問題C語言
- 聊聊C語言/C++—程式和程式語言C語言C++
- C語言 第一章 程式設計和C語言 例1.1 要求在螢幕上輸出 This is a C program.C語言程式設計
- C語言基礎例項—3句解決數字出現頻率問題C語言
- 三言兩語講排序演算法——插入排序排序演算法
- 資料結構--排序--插入排序--python語言描述資料結構排序Python
- Linux下C語言編譯的問題LinuxC語言編譯
- C語言程式設計題T1C語言程式設計
- c 語言指標操作經典問題指標
- C語言字串C語言字串
- C語言(一)C語言
- C語言: returnC語言
- C語言 typedefC語言
- C語言與嵌入式C語言的區別C語言
- C語言學習方法,怎麼學習C語言?C語言