生成一维随机数组、冒泡排序、二分法查找

 
 
#include<stdio.h>
#include<stdlib.h>
#define M 10
int main(){
    int a[M];
    srand((unsigned)time(NULL));//随机数时钟种子
        printf("生成随机数组:\n");
        for(int i=0;i<M;i++){
            a[i]=rand()%100;
            printf("%d  ",a[i]);
        }
        
    printf("\n排序后为\n");//冒泡排序
    for(int j=0;j<M-1;j++){
        for(int i=0;i<M-j-1;i++){
           if(a[i] > a[i + 1]){
                int temp = a[i];
                a[i] = a[i + 1];
                a[i+1]=temp;
            }
        }
    }
    for(int i=0;i<M;i++){
            printf("%d  ",a[i]);
    }
    
    int low,mid,high,n,found;
    low=0;
    high=M-1;
    found=0;
    printf("查找:");
    scanf("%d",&n);
    while(low<=high){//二分法查找
        mid=(low+high)/2;
        if(a[mid]==n){
            found=1;
            break;
        }
        else if(a[mid]>n){
            high=mid-1;
        }
        else{
            low=mid+1;
        }
    }
    if(found==1){
    printf("查找成功,位于第%d位",mid+1);
    }
    else{
        printf("查找失败,没有%d这个值",n);
    }
return 0;
}



猜你喜欢

转载自blog.csdn.net/perhamer/article/details/79826529