標籤:排序演算法 i++ 標記 div arc middle 記錄 下標 bsp
冒泡排序演算法
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語言數組之冒泡排序+折半尋找法(二分尋找)