zoukankan      html  css  js  c++  java
  • 排序

    #include<iostream>
    using namespace std;
    void bubble_sort(int n,int a[])
    {
     int i,j;
     for(i=n-1;i>=0;i--)
     {
      for(j=0;j<=i;j++)
      {
       if(a[j]>a[j+1])
       {
        swap(a[j],a[j+1]);
       }
      }
     }
    }
    void heap_sort_child(int i,int a[],int n)
    {
     if(i<=n/2)
     {
        int small=i;
        if(a[i]>a[2*i+1]&&2*i+1<=n)
        {
         small=2*i+1;
        }
        if(a[small]>a[2*i+2]&&2*i+2<=n)
        {
         small=2*i+2;
        }
        if(small!=i)
        {
         swap(a[i],a[small]);
         heap_sort_child(small,a,n);
        }
     }
    }
    void heap_sort(int a[],int n)
    {
     int m=n/2;
     int i;
     for(i=m;i>=0;i--)
     {
      heap_sort_child(i,a,n);
     }
    }
    void quick_sort(int low,int high,int a[])
    {
     int m=a[low];
     int left=low,right=high;
     while(left<right)
     {
      while(a[right]>m&&left<right)
      {
       right--;
      }
      if(left<right)
      {
       a[left++]=a[right];
      }
      while(a[left]<m&&left<right)
      {
       left++;
      }
      if(left<right)
      {
       a[right--]=a[left];
      }
     }
     a[left]=m;
     if(low<high)
     {
       quick_sort(low,left-1,a);
       quick_sort(left+1,high,a);
     }
    }
    void merge(int a[],int l,int m,int r)
    {
     int i=l,j=m+1,k=0;
     int *pd=new int [(r-l+1)*sizeof(int)];
     while(i<=m&&j<=r)
     {
      pd[k++]=a[i]>a[j]? a[i++]:a[j++];
     }
     while(i<=m)
     {
      pd[k++]=a[i++];
     }
     while(j<=r)
     {
      pd[k++]=a[j++];
     }
     for(k=0,i=l;i<=r;i++,k++)
     {
      a[i]=pd[k];
     }
     delete[] pd;
    }
    void merge_sort(int a[],int l,int r)
    {
     int m;
     if(l<r)
     {
          m=(r+l)>>1;
       merge_sort(a,l,m);
       merge_sort(a,m+1,r);
       merge(a,l,m,r);
     }
    }
    void insert_sort(int a[],int n)
    {
     int i,position;
     for(i=1;i<=n;i++)
     {
      if(a[i]<a[i-1])
      {
       position=i-1;
       do
       {
        swap(a[position],a[position+1]);
        position--;
       }while(position>=0&&a[position]>a[position+1]);
      }
     }
    }
    void select_sort(int a[],int n)
    {
     int i,j=0,large,position;
     while(j<n)
     {
      large=a[j];
      position=j;
          for(i=j;i<=n;i++)
       {
           if(large<a[i])
        {
            position=i;
         large=a[i];
        }
       }
       swap(a[j],a[position]);
       j++;
     }
    }
    int main()
    {
     int a[11]={9,8,7,6,5,4,3,2,1,0};
     int i;
     cout<<"冒泡排序"<<endl;
        bubble_sort(9,a);
     for(i=0;i<10;i++)
     {
      cout<<a[i]<<" ";
     }
     cout<<endl;
     cout<<"堆排序"<<endl;
        heap_sort(a,9);
     for(i=1;i<=9;i++)
     {
      swap(a[0],a[10-i]);
            heap_sort_child(0,a,9-i);
     }
     for(i=0;i<10;i++)
     {
      cout<<a[i]<<" ";
     }
     cout<<endl;
     cout<<"快速排序"<<endl;
        quick_sort(0,9,a);
     for(i=0;i<10;i++)
     {
      cout<<a[i]<<" ";
     }
     cout<<endl;
     cout<<"归并排序"<<endl;
        merge_sort(a,0,9);
     for(i=0;i<10;i++)
     {
      cout<<a[i]<<" ";
     }
     cout<<endl;
     cout<<"插入排序"<<endl;
        insert_sort(a,9);
     for(i=0;i<10;i++)
     {
      cout<<a[i]<<" ";
     }
     cout<<endl;
     cout<<"选择排序"<<endl;
        select_sort(a,9);
     for(i=0;i<10;i++)
     {
      cout<<a[i]<<" ";
     }
     cout<<endl;
     return 0;
    }
  • 相关阅读:
    Fiddler 抓包工具总结(转)
    JMS之ActiveMQ下载安装
    Centos中查询目录中内容命名ls
    JS解析Excel
    Echarts图表
    Oracle 控制语句
    时间日期的获取
    Random随机类(11选5彩票)BigInteger大数据类(华为面试题1000的阶乘)
    Java的析构函数System的finalize()
    JSP Standard Tag Library JSP标准标签库
  • 原文地址:https://www.cnblogs.com/beige1315402725/p/4869148.html
Copyright © 2011-2022 走看看