任务代码:
二分查找数组的一个数字:(函数法)
#include int binarySearch(int a[],int len,int key)
{
int low=0,high=len-1,mid;
int i=-1;//相当于index
while(low<=high)
{
mid=(low+high)/2;
if(a[mid]==key)
{
i=mid;
break;
}
else if(key>a[mid])
{
low=mid+1;
}
else
{
high=mid-1;
}
}
return i;
}
int main()
{
int array[10]={0,1,2,3,4,5,6,7,8,9};
//先排序
bubbleSort(array,10);
//二分查找
int key;
int index=-1;
printf("输入你想查找的数字:");
scanf("%d",&key);
index=binarySearch(array,10,key);
if(index>=0)
{
printf("找到这个数字位于第%d个",index);
}
else
{
printf("没有找到这个数!");
}
printf("\n");
return 0;
}
冒泡排序(升序排序1):
#include void bubbleSort(int a[],int len)
{
int i,j,t;
for(i=0;ia[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
}
int main()
{
int array[10]={4,7,9,1,2,6,5,3,8,0};
//冒泡排序
bubbleSort(array,10);
printf("排序后的数组为:\n");
int i;
for(i=0;i<10;i++)
{
printf("%d ",array[i]);
}
printf("\n");
return 0;
}
选择排序法:(升序排序法2)
#include void select_sort(int a[],int n)
{
int i,j,k,t;
for(i=0;i
插入排序:(升序排序法3)
#includevoid InsertionSort(int *num,int n)
{
int i = 0;
int j = 0;
int tmp = 0;
for(i = 1;i=0&&tmp=0对其进行边界限制。第二个为插入判断条件
{
num[j+1] = num[j];//若不是合适位置,有序组元素向后移动
j--;
}
num[j+1] = tmp;//找到合适位置,将元素插入。
}
}
int main()
{
int i = 0;
int num[8]={9,3,4,2,6,7,5,1};
InsertionSort(num,8);
/*这个函数必须知道元素的个数,所以将元素个数传入。
有心者可以在函数内部用sizeof求出元素个数 */
for(i=0;i<8;i++)
{
printf("%d ",num[i]);
}
return 0;
}
执行情况:
第一题:
第二题&第三题&第四题:
知识总结: