?? 二分法插入.cpp
字號:
#include<stdlib.h>
#include<stdio.h>
#define NUM 10//開始時有10數據
void main()
{
int i,k,space,low=0,high=NUM-1,mid;//k是存儲插入的數值,space是指插入位置的前一個位置
int List[NUM+1];//開辟一個能夠存儲11個數據的數組
printf("請輸入十個數值(按順序輸入,空格作間隔)\n");
for(i=0;i<NUM;i++)//讀入數值
{
scanf("%d",&List[i]);
}
printf("打印出數據\n");
for(i=0;i<NUM;i++)//打印
printf("%d ",List[i]);
printf("\n");
printf("輸入插入的數字:");
printf("\n");
scanf("%d",&k);
while(low<=high)
{
mid=(low+high)/2;
if(k==List[mid])
{
if(k<=List[mid+1])//如果k大于List[mid]的值小于mid后面的值,那么就找出space;<=是考慮到插入的數字與原表中有一樣的
space=mid;break;
}
else if(k<List[mid])
{
if(k>=List[mid-1])
{
space=mid-1;break;
}
else
high=mid-1;
}
else
{
if(k<=List[mid+1])
{
space=mid;break;
}
else
low=mid+1;
}
}
for(i=NUM;i>space;i--)//將space后面的數值依次向后面移動一個
{
List[i]=List[i-1];
}
List[space+1]=k;//插入k的值
printf("打印出插入后的數據:\n");
for(i=0;i<NUM+1;i++)//打印
printf("%d ",List[i]);
printf("\n");
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -