冒泡排序、选择排序,二分查找

时间:2020-03-26
本文章向大家介绍冒泡排序、选择排序,二分查找,主要包括冒泡排序、选择排序,二分查找使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
#include <stdio.h>

//冒泡排序 
void sort(int a[],int n)
{
    int i,j,temp;
    for(i=0;i<n-1;i++)
    {
        for(j=0;j<n-1-i;j++)
        {
            if(a[j]>a[j+1])
            {
                temp = a[j];
                a[j]=a[j+1];
                a[j+1]=temp;
            }
        }
    }
}
int find_max(int a[],int len)
{
    int i;
    int maxindex=0;
    for(i=0;i<len;i++)
    {
        if(a[i]>a[maxindex])
        {
            maxindex=i;
        }
    }
    
    return maxindex;
}

//二分查找 
int search(int k,int a[],int len)
{
    int flag=-1;
    int left = 0;
    int right = len-1;

    while(right>left)
    {
        int mid=(left+right)/2;
        if(a[mid]==k)
        {
            flag = mid;
            break;
        }
        else if(a[mid]>k)
        {
            right=mid-1;
        }
        else
        {
            left = mid+1;
        }
            
    
    }
    return flag;
}
int main(void)
{
    int num[10];
    int i,temp;
    for(i=0;i<10;i++)
    {
        scanf("%d",&num[i]);
    }
    /*
    冒泡排序 
    sort(num,10);
    for(i=0;i<10;i++)
    {
        printf("%d\n",num[i]);
    }
    */
    //选择排序
    for(i=10-1;i>=0;i--)
    {
        temp = num[find_max(num,i+1)];
        num[find_max(num,i+1)]=num[i];
        num[i]=temp;
        
    
        
     } 
    int k;
    scanf("%d",&k);
    int pos=search(k,num,10);
    if(pos!=-1)
    {
        printf("坐标是:%d",pos);
    }
    else
    {
        printf("没有找到");
    }
    
    return 0;
}

原文地址:https://www.cnblogs.com/Knightl8/p/12574462.html