冒泡排序算法
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 }
时间: 2024-11-06 10:38:24