C语言:编写查找和排序函数(二分查找,冒泡排序,选择排序法)

来源:互联网 发布:stata 债券数据是啥 编辑:程序博客网 时间:2024/05/19 13:30

任务代码:

二分查找数组的一个数字:(函数法)

#include <stdio.h>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 <stdio.h>void bubbleSort(int a[],int len){    int i,j,t;    for(i=0;i<len-1;i++)    {        for(j=0;j<len-i-1;j++)        {            if(a[j]>a[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 <stdio.h>void select_sort(int a[],int n){    int i,j,k,t;    for(i=0;i<n-1;i++) //n个数需要对比n-1轮    {        //找未排序中最小值的下标        k=i;        for(j=i+1;j<n;j++)//固定数组中的第一个数,让后面的所有数字和其进行比较        {            if(a[j]<a[k])//后面任意为排序的数小于第一个数a[k]            {                k=j;            }        }        //将最小值换到最前面        t=a[k];        a[k]=a[i];        a[i]=t;    }    return;}int main(){    int array[10]={3,6,5,4,7,2,9,1,0,8};        //选择排序排序    select_sort(array,10);        //打出排序后的数组    printf("排序后的数组为:\n");    int i;    for(i=0;i<10;i++)    {        printf("%d ",array[i]);    }    printf("\n");    return 0;    }



执行情况:

第一题:


第二题&第三题:



知识总结:




阅读全文
0 0