C语言实现普通归并排序
2013-11-12 15:43
337 查看
void merge_array(int a[],int first, int mid, int last, int temp[]) { int i = first, j = mid + 1; int m = mid, n = last; int k = 0; while(i <= m && j <= n) { if(a[i] <= a[j]) { temp[k++] = a[i++]; } else { temp[k++] = a[j++]; } } while(i <= m) { temp[k++] = a[i++]; } while(j <= m) { temp[k++] = a[j++]; } for(i=0; i < k; i++) { a[first + i] = temp[i]; } } void mergesort(int a[], int first, int last, int temp[]) { if(first < last) { int mid = (first + last)/2; mergesort(a, first,mid, temp); //取数组前一半进行mergesort,直到子数组只有一个元素 mergesort(a, mid+1, last, temp); //取数组后一半进行mergesort,直到子数组只有一个元素 merge_array(a, first, mid, last, temp); //将两个有序数组合并在一起 } } void main() { int array[6] = {4,3,10,82,2,1}; int b[6] = {0};// b用作临时存储数组 mergesort(array,0,5,b); for(int i=0;i<6;i++) { printf("%d,",array[i]); } }
相关文章推荐
- C语言函数集(十七)
- c语言一行写不下该怎么换行
- Windows 7中使用Eclipse 使用CDT and WinGW 开发C/C++(转载)
- C语言函数集(十六)
- C语言函数集(十五)
- C语言函数集(十四)
- C语言函数集(十三)
- C++里的char和string
- C语言函数集(十二)
- C语言函数集(十一)
- C语言函数集(十)
- C语言函数集(九)
- C++中友元(友元函数和友元类)的用法和功能
- C语言函数集(八)
- C语言函数集(七)
- C语言函数集(六)
- C语言函数集(五)
- c/c++目标文件中_ZN****符号是什么意思
- c++中 *& 和 **& 符号作用说明
- C语言函数集(四)