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

任务代码:

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

#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)

#include
void 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;
}



执行情况:

第一题:

C语言:编写查找和排序函数(二分查找,冒泡排序,选择排序法,插入排序)_第1张图片

第二题&第三题&第四题:

C语言:编写查找和排序函数(二分查找,冒泡排序,选择排序法,插入排序)_第2张图片


知识总结:




你可能感兴趣的:(C语言提高学习)