zoukankan      html  css  js  c++  java
  • 归并排序与堆排序

     1 #include <iostream>
     2 using namespace std;
     3 
     4 //  归并排序
     5 void Merge(int a[],int b[],int i,int m,int n)
     6 {
     7     int j,k;
     8     for(j = m+1,k=i;i<=m&&j<=n;k++)
     9     {
    10         if(a[i] < a[j]) 
    11             b[k] = a[i++];
    12         else 
    13             b[k] = a[j++];
    14     }
    15 16 if(i<=m) 17 for(int p=i;p<=m;p++,k++) b[k] = a[p]; 18 if(j<=n) 19 for(int p=j;p<=n;p++,k++) b[k] = a[p]; 20 } 21 22 void copyArray(int a[],int b[],int s,int e) 23 { 24 for(int i = s;i<=e;i++) 25 b[i] = a[i]; 26 } 27 void Merge_Sort(int a[],int b[],int s,int t) 28 { 29 if(s == t) b[s] = a[s]; 30 else{ 31 int m = (s + t)/2; 32 Merge_Sort(a,b,s,m); 33 Merge_Sort(a,b,m+1,t); 34 Merge(b,a,s,m,t); 35 copyArray(a,b,s,t); // 减少一个中间数组的空间开销 36 } 37 } 38 39 void main() 40 { 41 int a[10] = {5,4,3,2,-1,9,10,15,8,6}; 42 int b[10]; 43 Merge_Sort(a,b,0,9); 44 for(int i=0;i<10;i++) 45 cout << a[i] << endl; 46 }
     1 #include <iostream>
     2 #include <algorithm>
     3 using namespace std;
     4 // 大顶堆排序
     5 
     6 void HeapAdjust(int a[],int p,int size)
     7 {
     8     int lchild = 2*p;
     9     int rchild = 2*p+1;
    10     int max = p;
    11     if(p<=size/2)
    12     {
    13         if(a[max] < a[lchild] && lchild <=size) 
    14             max = lchild;
    15         if(a[max] < a[rchild] && rchild <=size) 
    16             max = rchild;
    17         if(max != p)
    18         {
    19             swap(a[max],a[p]);
    20             HeapAdjust(a,max,size);
    21         }
    22     }
    23 }
    24 
    25 void HeapSort(int a[],int s,int size)
    26 {
    27     // 建堆
    28     for(int i=size/2;i>=s;i--)
    29         HeapAdjust(a,i,size);
    30 
    31     // 调整
    32     for(int i=size;i>=s;i--)
    33     {
    34         swap(a[s],a[i]);
    35         HeapAdjust(a,s,i-1);
    36     }
    37 }
    38 
    39 void main()
    40 {
    41     int a[]= {5,1,4,3,2,-1,9,10,-15,19,20};
    42 
    43     HeapSort(a,1,10);
    44     for(int i=1;i<=10;i++)
    45         cout << a[i] << endl;
    46 }

    与书上的代码有点差别,个人理解的差别吧...

  • 相关阅读:
    jmeter—— vars 和 props 用法
    java—把字符串转成list类型,并遍历列表
    fillder—篡改请求参数重新请求
    Jmeter—变量嵌套变量方法
    python——logging日志模块
    python学习——使用excel读写测试数据
    python学习——单元测试unittest
    python学习——类
    python学习——异常
    资源信息汇总
  • 原文地址:https://www.cnblogs.com/xuxu8511/p/2440211.html
Copyright © 2011-2022 走看看