
冒泡排序算法
将相邻的元素进行两两比较,大的向后”冒”, 小的向前”赶”。
口诀: N个数字来排队,两两比较小靠前
外层循环N-1(控制需要比较的轮数)。
内层循环N-1-i(控制每轮需要比较的次数)。
]; int i; //循环接收用户输入的元素 ;i<;i++){ printf(); scanf("%d",&num[i]); } ;i<;i++){ //外层循环,控制排序的轮数 int j; ;j<-i;j++){ //内层循环,控制冒牌排序每轮的次数 ]){ //判断判断元素和后一个元素大小,如果前面元素大,则交换位置 int temp; temp=num[j]; num[j]=num[j+]; num[j+]=temp; } } } //遍历打印数组 ;i<;i++){ printf("%d\t",num[i]); }
二分查找法(折半查找,前提是必须是有序数组)
原理:将待查找的数字与数组中的中间位置进行比较。
如果比中间位置的元素值小,去左边查找(更改结束位置)
如果比中间位置的元素值大,去右边查找(更改起始位置)
]={,,,,,,,,,}; int search; printf("请输入你要查找的元素\n"); scanf("%d",&search); int middle;//中间位置 ;//起始下标,默认第一个元素的下标 ;//结束下标,默认最后一个元素的下标 ;//用了记录查询次数 ;//标记,判断是否有该元素; while(left<=right){ count++; middle=(left+right)/; if(search>num[middle]){//待查找的元素必中间位置元素的值大,到右边查找,更改起始位置 left=middle+; }else if(search<num[middle]){//待查找的元素必中间位置元素的值小,到左边查找,更改结束位置 right=middle-; }else{ printf("你要查找的要素%d下标为%d",search,middle); flag=; break; } } ){ printf("你一共用了%d次查找到该元素\n",count); }else{ printf("你要查找的元素不存在\n"); }