排序算法——归并排序(Merge Sort)

来源:互联网 发布:网络信息收集的好處 编辑:程序博客网 时间:2024/05/17 09:36

归并排序(Merge Sort)

C/C++代码:

#include <iostream>#include <stdlib.h>using namespace std;void Print( int r[], int n ){for( int i = 0; i < n; i++ ){cout << r[i] << "  ";}cout << endl;}void Merge( int r[], int start, int mid, int end ){if( start > mid || mid > end ) return;int i = start, j = mid + 1, k = 0;int *array = (int*) malloc( ( end - start + 1 ) * sizeof( int ) ); while(i <= mid && j <= end){if( r[i] < r[j] )array[k++] = r[i++];elsearray[k++] = r[j++];}     while( i <= mid )array[k++] = r[i++];while( j <= end )array[k++] = r[j++];    for( i = start, j = 0; i <= end; i++, j++)r[i] = array[j];          free( array );}void MergeSort( int r[], int start, int end ){if( start < end ){int mid = ( start + end ) / 2;MergeSort( r, start, mid );MergeSort( r, mid + 1, end );Merge( r, start, mid, end );}}int main(){int r[] = { 34, 12, 45, 78, 52, 18, 67, 90, 64, 72, 27 };int n = sizeof( r ) / sizeof( int );Print( r, n );MergeSort( r, 0, n-1 );Print( r, n );system( "PAUSE" );return 0;} 


0 0