1. 程式人生 > >C語言數組之冒泡排序+折半查找法(二分查找)

C語言數組之冒泡排序+折半查找法(二分查找)

不存在 次數 存在 是否 .com int count 結束 如果

冒泡排序算法

技術分享

 1 int num[5];
 2     int i;
 3     //循環接收用戶輸入的元素 
 4     for(i=0;i<5;i++){
 5         printf("請輸入第%d個元素\n",i+1);
 6         scanf("%d",&num[i]);
 7     }
 8     for(i=0;i<4;i++){    //外層循環,控制排序的輪數 
 9         int j; 
10         for(j=0;j<4-i;j++){        //內層循環,控制冒牌排序每輪的次數 
11             if
(num[j]>num[j+1]){ //判斷判斷元素和後一個元素大小,如果前面元素大,則交換位置 12 int temp; 13 temp=num[j]; 14 num[j]=num[j+1]; 15 num[j+1]=temp; 16 } 17 } 18 } 19 //遍歷打印數組 20 for(i=0;i<5;i++){ 21 printf("%d\t",num[i]); 22
}

二分查找法(折半查找,前提是必須是有序數組)

 1 int num[10]={1,2,3,4,5,6,7,8,9,10};
 2     int search;
 3     printf("請輸入你要查找的元素\n");
 4     scanf("%d",&search);
 5     int middle;//中間位置 
 6     int left=0;//起始下標,默認第一個元素的下標 
 7     int right=9;//結束下標,默認最後一個元素的下標
 8     int count=0;//用了記錄查詢次數
 9     int flag=0;//標記,判斷是否有該元素;
10 while(left<=right){ 11 count++; 12 middle=(left+right)/2; 13 if(search>num[middle]){//待查找的元素必中間位置元素的值大,到右邊查找,更改起始位置 14 left=middle+1; 15 }else if(search<num[middle]){//待查找的元素必中間位置元素的值小,到左邊查找,更改結束位置 16 right=middle-1; 17 }else{ 18 printf("你要查找的要素%d下標為%d",search,middle); 19 flag=1; 20 break; 21 } 22 } 23 if(flag==1){ 24 printf("你一共用了%d次查找到該元素\n",count); 25 }else{ 26 printf("你要查找的元素不存在\n"); 27 }

C語言數組之冒泡排序+折半查找法(二分查找)