zoukankan      html  css  js  c++  java
  • 排序小结(C++版)

    一、快速排序

    #include <iostream>
    using namespace std;
    
    int adjust(int a[],int start,int end)
    {
        int i,j;
        i=start;
        j=end;
        int temp=a[i];
        while(i<j)
        {
            while(i<j&&temp<a[j])
                j--;
            if(i<j)
                a[i++]=a[j];
            while(i<j&&temp>=a[i])
                i++;
            if(i<j)
                a[j--]=a[i];
        }
        a[i]=temp;
        return i;
    }
    
    void quicksort(int a[],int start,int end)
    {
        if(start<end)
        {
            int m=adjust(a,start,end);
            quicksort(a,start,m-1);
            quicksort(a,m+1,end);
        }    
    }
    
    void print(int a[],int n)
    {    
        for(int i=0;i<n;i++)
            cout<<a[i]<<" ";
        cout<<endl;
    }
    
    void main()
    {
        int a[]={5,9,3,7,1,8};
        quicksort(a,0,5);
        print(a,6);
        cout<<"hello world
    ";
        system("pause");
    }

     二、堆排序

    #include <iostream>
    using namespace std;
    
    //s表示根节点(仅s节点不满足堆)
    //n表示所有节点的个数
    //a[0]不参与排序
    void adjust(int a[],int s,int n)
    {
        int j;
        int temp=a[s];
        for(j=2*s;j<=n;j=2*j)
        {
            if(j<n&&a[j]<a[j+1])
                j++;
            if(temp>a[j])
                break;
            a[s]=a[j];
            s=j;
        }
        a[s]=temp;
    }
    
    void heapsort(int a[],int n)
    {
        int i;
        for(i=n/2;i>=1;i--)
            adjust(a,i,n);
        for(i=n;i>1;i--)
        {
            swap(a[1],a[i]);
            adjust(a,1,i-1);
        }
    }
    
    void print(int a[],int n)
    {    
        for(int i=0;i<n;i++)
            cout<<a[i]<<" ";
        cout<<endl;
    }
    
    void main()
    {
        int a[]={-999,5,9,3,7,1,8};
        heapsort(a,6);
        print(a,7);    
        system("pause");
    }
  • 相关阅读:
    转贴:Asp.Net 学习资源列表
    实现简单的写字板
    android绘图—Paint path 旋转
    Eclipse Android编程快捷键
    android Bitmap学习总结
    各种颜色对应的十六进制数
    Android surfaceView 与View 的区别
    SQLite设置_id自增的方法
    数据库表外键设置
    android自定义View的用法
  • 原文地址:https://www.cnblogs.com/nilongqibu/p/3644608.html
Copyright © 2011-2022 走看看