板子:
插入後,每次與中間值相比較,再與左半部分中間值比較,再與右半部份中間值比較,直到找到它自己的位置,
待排序資料:2,1,6,7,4 資料部分:原文
取第乙個元素作為有序表,剩餘的元素作為無序表
其中有序表:2;無序表:1,6,7,4
第一次比較,從無序表中取出第乙個數 1,與中間值2比較,1<2,1插到2的前面,得到
有序表:1,2;無序表:6,7,4
第二次比較,從無序表中取出第乙個數 6,與中間值1比較,6>1,要放在1的後面,再與後半區(有序表:2)的中間值2比較,6>2,6插入到2的後面,得到
有序表:1,2,6;無序表:7,4
第三次比較,從無序表中取出第乙個數 7,與中間值2比較,7>2,7放在2後面,再與後半區(有序表:6)的中間值6比較,7>6,7放在6後面,得到
有序表:1,2,6,7;無序表:4
第四次比較,從無序表中取出第乙個數 4,與中間值2比較,4>2,4放在2後面,再與後半區(有序表:6,7)的中間值6比較,4<6,4放在6前面,最終得到:
1,2,4,6,7
陣列版本;
1 #include2 #include3 #include4view codeusing
namespace
std;
56 #include 7 #include 8
9void bininsertsort(int a, int
n)10
25for(j = i-1; j >= high+1; j--) //
移動元素,騰出空間
26 a[j+1] =a[j];
27 a[high+1] = temp; //
將待排序的元素插入28}
29}3031
intmain()
3239
bininsertsort(nums,n);
40for(int i =0;ii)43}
44return0;
45 }
vector版本;
#include#include#includeusing namespace std;void bininsertsort(vector& nums, int n)
v.insert(v.begin()+r,nums[i]);
}for(vector::iterator it=v.begin();it!=v.end();it++)
cout<
}int main()
bininsertsort(nums,n);
}return 0;
}
二分 折半 查詢
折半查詢 又叫二分查詢,採用分治思想,適用於不經常變動且查詢頻繁的表 演算法思想 將n個元素 假設n個元素公升序 分為大致相同的兩部分,取data n 2 與目標元素m比較 若data n 2 m return n 2 若data n 2 m 則我們只要在data的左半部分繼續查詢 若data n ...
二分 折半 筆記
菜雞今天又開始了乙個新的演算法,廢話不多說,開始筆記。二分查詢是乙個十分常用的演算法,適用於對帶有單調性的資料進行處理或查詢。大多數題目可能沒那麼顯示,需要自己來找這個單調性在哪,所以這就是乙個重點,具體的用法和 很簡單,就那麼幾行,但是對於折半的條件卻需要有嚴格的要求。牛客 完全平方數 就如這個題...
二分 折半 查詢
二分查詢 請對乙個有序陣列進行二分查詢 輸入乙個數看看該陣列是否存在此數,並且求出下 標,如果沒有就提示 沒有這個數 二分查詢演算法的思路 二分 折半 查詢條件 有序陣列。public class binarysearch 不考慮有重複元素的查詢。int index solutionsearch a...