zoukankan      html  css  js  c++  java
  • 归并排序的实现

      归并排序也是一种很优越的排序方式,并且时间复杂度为O(nlogn),而且归并排序的思想很有意思很有启发,包括排序过程和时间复杂度的推导等等,具体可以google一下。下面给出二路归并的实现代码。

    #include<iostream>
    using namespace std;
    void merge(int data[],int low,int high,int mid)
    {
    	int a[mid-low+1],b[high-mid];
    	int i,j,k;
    	for(int m = 0;m < mid-low+1;m ++)
    		a[m] = data[low+m];
    	for(int n = 0;n <high-mid; n ++ )
     		b[n] = data[mid+1+n];
    	i = j = 0 ;
    	k = low;
    	while(i < mid-low+1 && j < high-mid)
    		if(a[i] <= b[j])
    			data[k++] = a[i++];
    		else
    			data[k++] = b[j++];
    	while(i < mid-low+1)
    		data[k++] = a[i++];
    	while(j < high-mid)
    		data[k++] = b[j++];
    } 
    void mergesort(int data[],int low,int high)
    {
    	int mid;
    	if(low < high)
    		{
    			mid = int((low + high)/2);
    			mergesort(data,low,mid);
    			mergesort(data,mid+1,high);
    			merge(data,low,high,mid);
    		}
    }
    int main()
    {
    	int data[10] = {3,6,1,9,4,5,2,7,0,8};
    	mergesort(data,0,9);
    	for(int i = 0;i < 10;i ++)
     		cout<<data[i]<<" ";
    	cout<<endl;
    	return 0;
    }
    

      运行结果如图:

  • 相关阅读:
    LeetCode653. 两数之和 IV
    DFS
    DFS hdu 1016
    nyist 58 最小步数 BFS
    闭路电视监控系统
    闭路监控
    闭路电视
    恋爱的犀牛
    http://blog.163.com/db_teacher/blog/static/194540298201110723712407/
    2013=12=3 数据库实验七 数据控制实验(完整性部分)
  • 原文地址:https://www.cnblogs.com/coderchuanyu/p/4217273.html
Copyright © 2011-2022 走看看