int mid = min + (key - arr[min]) / (arr[max] - arr[min]) * (max - min);
17.数组常见算法4 分块查找
18.数组常见算法5 冒泡排序
笔记
小程序错误
#include<stdio.h>
int main()
{
/*
冒泡排序:
1.相邻的元素两两比较,大的放右边,小的放左边
2.第一轮比较完毕之后,最大值就已经确定,第二轮可以少循环一次,后面依次类推
3.如果数组中有n个数据,总共我们只要执行n-1轮的代码就可以
需求:
利用冒泡排序将下列数据按照从大到小的顺序进行排序
3,5,2,1,4
*/
//1.定义数组存储数据
int arr[] = { 3,5,2,1,4 };
int len = sizeof(arr) / sizeof(int);
//2.利用冒泡排序,把数组中的数据按照升序排列
//第一轮:
for (int i = 0; i < len; i++)
{
//相邻的元素两两比较,小的在前面,大的后面
if (arr[i] > arr[i + 1])
{
int temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
//遍历
for (int i = 0; i < len; i++)
{
printf("%d", arr[i]);
}
return 0;
}
19.数组常见算法6 选择排序
小程序
#include <stdio.h>
int main()
{
/*
选择排序:
1.从0索引开始,跟后面的元素一一比较
2.小的放前面,大的放后面
3.第一轮循环从0索引开始比较,结束后最小的数据已经确定
4.第二轮循环从1索引开始,后面依次类推
5.第三轮循环从2索引开始,后面依次类推
6.第四轮循环从3索引开始,后面依次类推
需求:
利用选择排序将下列数据按照从小到大的顺序进行排序
3,5,2,1,4
*/
//1.定义数组存储元素
int arr[] = { 3,5,2,1,4 };
int len = sizeof(arr) / sizeof(int);
//2.利用选择排序,将数组中的数据按照升序进行排列
for (int i = 0; i < len - 1; i++)
{
//i.依次表示数组中的每一个索引
//第一轮: i =0 j=1 2 3 4
//第二轮: i=1 j=2 3 4
//第三轮: i=2 j=3 4
//第四轮: i=3 j=4
for (int j = i + 1; j < len; j++)
{
//j:依次表示i索引后面的每一个索引
if (arr[i] > arr[j])
{
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
//遍历
for (int i = 0; i < len; i++)
{
printf("%d ", arr[i]);
}
return 0;
}