插入排序与归并排序
2013-04-23 21:16
204 查看
#include <iostream> using namespace std; void insertSort(int a[],int n){ for(int j = 1; j < n ;j++){ int key = a[j]; int i = j - 1; while(i >= 0 && a[i] > key){ a[i + 1] = a[i]; i--; } a[i + 1] = key; } } int main() { int a[6] = {7,6,3,1,2,5}; insertSort(a,6); for(int i = 0;i < 6;i++) cout << a[i] << " "; system("pause"); return 0; }
#include <iostream> using namespace std; const int max_int = 0x7fffffff; void merge(int a[],int p,int q,int r){ int n1 = q - p + 1; int n2 = r - q; int *L = new int[n1 + 1]; int *R = new int[n2 + 1]; int i,j,k; for(i = 0 ; i < n1 ; i++) L[i] = a[p + i]; for(j = 0 ; j < n2; j++) R[j] = a[q + j +1]; L[n1] = max_int; R[n2] = max_int; i = 0; j = 0; for(k = p ; k <= r ; k++) if(L[i] <= R[j]){ a[k] = L[i]; i++; }else{ a[k] = R[j]; j++; } } void mergeSort(int a[],int p,int r){ if(p < r){ int q = (p + r) / 2; mergeSort(a,p,q); mergeSort(a,q + 1,r); merge(a,p,q,r); } } int main() { int a[]={7,3,2,5,1,4,5,9,100,1}; mergeSort(a,0,9); for(int i = 0;i < 10 ; i++) cout << a[i] << " "; system("pause"); return 0; }
相关文章推荐
- 六、内部排序综合(九种)—插入类排序(直接插入、折半插入、希尔排序);交换类排序(冒泡、快速);选择类排序(简单选择、堆排序);二路归并排序;基数排序
- java中各种常用排序实现(直接插入排序、直接选择排序、堆排序、冒泡排序、快速排序和归并排序)
- 练习《算法导论》之排序:插入排序,归并排序,堆排序,快速排序
- 插入排序与归并排序
- 插入排序和归并排序 [Algorithm]
- 排序算法: 冒泡排序, 快速排序,希尔排序,直接插入排序 ,直接选择排序,归并排序,堆排序
- 比较排序之插入和归并排序
- 详解“十大排序技术”(一):插入排序与归并排序
- 插入排序、归并排序和递归算法的复杂性分析
- 【更新】排序算法比较:插入排序,冒泡排序,归并排序,堆排序,快速排序,计数排序,基数排序,桶排序
- 数据结构直接插入排序——归并排序
- 排序算法整理(C++):插入排序、交换排序、选择排序、归并排序
- python排序算法-冒泡排序,选择排序,直接插入排序,希尔排序,归并排序,快速排序,堆排序
- 插入排序、选择排序、归并排序、堆排序、快速排序的JAVA实现
- 程序员必知的8大排序(①直接插入排序②希尔排序③简单选择排序④堆排序⑤冒泡排序⑥快速排序⑦归并排序⑧基数排序)
- 插入排序、交换排序、选择排序、归并排序、基数排序
- 初级版、正宗版、升级版冒泡排序;简单选择排序;直接插入排序;希尔排序;堆排序;递归法 、非递归法归并排序;快速排序; 快速排序优化算法
- 插入排序、冒泡排序、选择排序、希尔排序、快速排序、归并排序、堆排序和LST基数排序的C++代码实现
- 插入排序和归并排序(算法学习1)
- 归并排序中对小数组采用插入排序