C語言數組之冒泡排序+折半查找法(二分查找)
阿新 • • 發佈:2017-05-12
不存在 次數 存在 是否 .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語言數組之冒泡排序+折半查找法(二分查找)