哈喽!各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮助,话不多说,文章推上!欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!
冒泡排序和折半查找排序是我们比较常用到的、简单的排序函数。接下来,我将用最近学到的C语言知识,将这两种排序算法用代码形式给大家具体分析一下,也希望大家能够通过本文的阅读学习,下来后可以闭着眼睛把它们用代码实现出来!
//冒泡排序算法实现:
#define _CRT_SECURE_NO_WARNINGS 1
#include
int main()
{
int arr[10] = { 2,3,1,6,7,8,9,10,4,5 };
int len = sizeof(arr) / sizeof(arr[0]);//这里求得数组元素的个数
for (int i = 0; i < len; i++)//控制的是比较的趟数
{
for (int j = 0; j < len - i - 1; j++)//控制的是每一趟比较的次数
{
int temp = 0;
if (arr[j] < arr[j + 1])//实现的是降序排序
{
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
for (int i = 0; i < len; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
#define _CRT_SECURE_NO_WARNINGS 1
#include
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };//有序数组
int len = sizeof(arr) / sizeof(arr[0]);
int left = 0;
int right = len - 1;
int mid = 0;
int k = 0;
scanf("%d", &k);
while (left <= right)
{
//mid = (left + right) /2; 这样写不好因为,mid只要是一个数据类型的数值,其就有一个最大数上限
//如果要让他的上限更大,尽可能规避这个问题。
mid = (right - left) / 2 + left;
if (arr[mid] > k)
{
right = mid - 1;
}
else if (arr[mid] < k)
{
left = mid + 1;
}
else
{
printf("找到了,该数的下标为:%d\n", mid);
break;
}
}
return 0;
}
本篇文章旨在带领大家学习冒泡排序和折半查找算法,并用C语言知识实现它们。 如果我写的有什么的不好之处,请在文章下方给出你宝贵的意见。如果觉得我写的好的话请点个赞赞和关注哦~