归并排序
来源:互联网 发布:java中实现多线程开发 编辑:程序博客网 时间:2024/06/03 20:34
#include <stdio.h>void merge_array(int arr[],int begin, int mid, int end);void print_array(int arr[], int len);void merge_sort(int arr[], int begin, int end);void main(void){int array[8] = {2, 5, 4, 7, 1, 3, 2, 6};merge_sort(array, 1, 8);print_array(array, 8); }void merge_array(int arr[], int begin, int mid, int end){int i, j, k;int left_arr_len = mid - begin + 1;int right_arr_len = end - mid;int left_array[left_arr_len + 1];int right_array[right_arr_len + 1];for (i = 0; i < left_arr_len; i++){left_array[i] = arr[begin+i-1];}for (j = 0; j < right_arr_len; j++){right_array[j] = arr[mid+j];}left_array[left_arr_len] = 1000;right_array[right_arr_len] = 1000;for (k = begin, i = 0, j = 0; k < end+1; k++){if (left_array[i] <= right_array[j]){arr[k-1] = left_array[i];i++;}else{arr[k-1] = right_array[j];j++;}} }void merge_sort(int arr[], int begin, int end){int mid;if (begin < end){mid = (begin + end) / 2;merge_sort(arr, begin, mid);merge_sort(arr, mid + 1, end);merge_array(arr, begin, mid, end);} }void print_array(int arr[], int len){int i;for (i = 0; i < len; i++){printf("%d ", arr[i]);}printf("\n");}
- 归并排序-归并排序
- 归并和归并排序
- 归并与归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 排序::归并
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- java中必须要了解的问题
- Objective-C application starts
- xcode 里的release 和 debug 区别
- C++第5周任务1-5在构造函数中使用参数初始化表对数据成员初始化。
- NS_BLOCK_ASSERTIONS in Objective-C
- 归并排序
- 程序员必经之路
- XCode Debug 模式断言擒 bug 记
- 新浪微博技术架构分析-转载
- android振动效果的实现
- android 2.3 多媒体框架 java API 与 本地 API 映射关系
- effective stl笔记之vector与string
- 读书笔记
- SVM分类及其Model文件的解析使用