1.氣泡排序:
what:將元素進行兩兩比較,大的(小的)向後排。
when:陣列中有多個元素,需要進行比較排序比較的時候使用。
how:n個數字來排隊,兩兩比較小靠前。(公升序)
外層迴圈:n-1(控制比較的輪數)
內層迴圈:n-1-i(控制每輪比較的的次數,i代表外層迴圈變數)
for example:
int num[5];
int i,k,j,temp;
for(i=0;i<5;i++)
for(i=0;i<4;i++)} }
for(j=0;j<5;j++)
2.二分法查詢(折半查詢):前提查詢的元素必須有序。
what:將待查詢的元素與陣列中的中間位置元素進行比較。
when:要查詢陣列中某一元素。
how:將待查詢的數字與陣列中的中間位置進行比較。
如果比中間位置的元素值小,去左邊查詢(更改結束位置)。
如果比中間位置的元素值大,去右邊查詢(更改起始位置)。
for example:
int nums[9]=;
int i=0,left,right,mid,search;
left=0;
right=8;
printf("請輸入要查詢的值\n");
scanf("%d",&search);
while(left<=right) //當為偶數序列時會出現相等的情況
else }
printf("查詢這個%d一共用了%d次\n",search,i);
氣泡排序 二分法
核心 掐頭去尾取中間.一次砍一半 二分查詢.每次能夠排除掉一半的資料.查詢的效率非常高.但是侷限性比較大.必須是有 序序列才可以使用二分查詢 兩種演算法 常規迴圈,遞迴迴圈 使用二分法可以提高效率,前提條件 有序序列 lst 22,33,44,55,66,77,88,99,101 238 345 4...
二分法和氣泡排序
先放乙個 可以看到冒泡,選擇,插入排序的過程 冒泡 選擇 插入排序 前言 二分法是乙個優化演算法,在乙個基於有序列表中,列表從1到10000,如果要找乙個8899的數字,不用二分法的話,就是迴圈從一到10000,直到找到8899.但是,有沒有想過,前5000個都比8899小,所以能不能直接第一次就判...
氣泡排序,二分法查詢
lst 18,8,16,2,5,7 通過交換的方式.把列表中最大的值一定到最右端 for abc in range len lst 控制內部移動的次數 n 0 while n len lst 1 if lst n lst n 1 lst n lst n 1 lst n 1 lst n n n 1 p...