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=4for (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;}