歸併排序及二分法

2021-09-26 04:55:24 字數 1675 閱讀 7734

什麼叫做歸併排序?歸併排序指的是利用"歸併"技術來進行排序。歸併是指將若干個已排序的子檔案合併成乙個有序的檔案。如下圖所示:

歸併排序演算法主要分成兩部,一步是「分」,另一步是「並」,正如上圖所表示的一樣。分指的是從序列中進行二等分,以此分下去,直到序列長度為0或1為止。「分」對應的基本問題就是二分法;並指的是序列的合併。「並」對應的基本問題是指將兩個順序變化的序列合併成乙個順序變化的序列。

二分查詢,顧名思義,指的就是在乙個順序序列中,找到該序列是否有相應的元素,如下圖所示,在0~128中尋找元素77,尋找過程如下圖所示:

//二分法查詢資料 確定目標值是否在left_val~right_val之間

//找到返回1,沒找到返回-1

int search(int left_val, int right_val, int target_val)

}//二分法查詢陣列中的資料,找到返回1,沒找到返回-1

int nums_search(int *nums,int left_index,int right_index,int target_val)

}

//給兩個順序排列陣列,合併為乙個陣列

int *merge_array(int *array1, int length1, int *array2, int length2)

//二分法查詢資料 確定目標值是否在left_val~right_val之間

int search(int left_val, int right_val, int target_val)

}//二分法查詢陣列中的資料

int nums_search(int *nums,int left_index,int right_index,int target_val)

}//給兩個順序排列陣列,合併為乙個陣列

int *merge_array(int *array1, int length1, int *array2, int length2)

//二分法查詢陣列中的資料

//int nums[5] = ;

//int value;

//while (true)

// //測試陣列合併

//int a1[5] = ;

//int a2[7] = ;

//int length1 = sizeof(a1) / sizeof(int);

//int length2 = sizeof(a2) / sizeof(int);

//int *a3 = merge_array(a1, length1, a2, length2);

//array_print(a3, length1+length2);

//測試歸併排序

//int a[11] = ;

//array_print(a, 11);

//mergesort(a, 11, 0, 11);

//array_print(a, 11);

}

若有疑問和不足之處,可聯絡我本人郵箱[email protected]

歸併排序 C 二分法插入資料

include include include include void compare std vector int vec,int b,int start,int end int main compare sorted,29,0,sorted.size for int i 0 i sorted....

二分法排序C

首先說一下二分法排序的原理,演算法思想簡單描述 在插入第i個元素時,對前面的0 i 1元素進行折半,先跟他們 中間的那個元素比,如果小,則對前半再進行折半,否則對後半 進行折半,直到left right,然後再把第i個元素前1位與目標位置之間 的所有元素後移,再把第i個元素放在目標位置上。二分法排序...

利用二分法排序

include int main 將array陣列的前兩個數按大小賦給new陣列的前兩個元素 new 0 array 0 array 1 array 0 array 1 new 1 array 0 array 1 array 0 array 1 m 2 新陣列new的有效個數 for i 2 i 1...