zoukankan      html  css  js  c++  java
  • c语言 快速排序---归并排序----堆排序

    //快速排序:
    
    #include <stdio.h>
    #define MAX 500000
    int s[MAX];
    void Q_Sort(int start,int end)
    {
        int i,j,t;
        if ( start >= end ) return ;
        t = s[start];
        i = start;
        j = end;
        while ( i < j)
        {
            while ( s[j] >= t && i < j)
            {
                j--;
            }
            s[i] = s[j];
            while ( s[i] <= t && i < j)
            {
                i++;
            }
            s[j] = s[i];
        }
        s[i] = t;
        Q_Sort(start,i-1);
        Q_Sort(i+1,end);
    }
    int main()
    {
        int i,n;
        while (scanf("%d",&n),n)
        {
            for ( i = 0 ; i < n ; i++)
            {
                scanf("%d",&s[i]);
            }
            Q_Sort(0,n-1);
        }
        return 0;
    }
    

      






    //归并排序 #include <stdio.h> #define MAX 500000 int a[MAX]; int b[MAX]; void Merge(int left,int mid,int right) { int i,j,k; i = left; j = mid+1; k = left; while ( i <= mid && j <= right ) { if ( a[i] <= a[j] ) { b[k++] = a[i++]; } else { b[k++] = a[j++]; } } while ( i <= mid ) { b[k++] = a[i++]; } while ( j <= right ) { b[k++] = a[j++]; } } void MergeSort(int left,int right) { int i,mid; if ( left < right ) { mid = ( left + right ) / 2 ; MergeSort(left , mid); MergeSort(mid+1 , right); Merge(left,mid,right); for ( i = left ; i <= right ; i++) { a[i] = b[i]; } } } int main() { int i,n; while (scanf("%d",&n),n) { for ( i = 0 ; i < n ; i++) { scanf("%d",&a[i]); } MergeSort(0,n-1); } return 0; }         

      




    //堆排:
    
    #include <stdio.h>
    #define MAX 500000
    int s[MAX];
    void Heapify(int x,int n)
    {
        if ( x*2+1 <= n)
        {
            if ( s[x] == s[2*x] && s[x] == s[2*x+1] ) return ;
            if ( s[2*x] > s[x] && s[2*x] > s[2*x+1] )
            {
                s[2*x] ^= s[x] ^= s[2*x] ^= s[x] ;
                Heapify(2*x,n);
            }
            else if ( s[2*x+1] > s[x] && s[2*x+1] > s[2*x] )
            {
                s[2*x+1] ^= s[x] ^= s[2*x+1] ^= s[x] ;
                Heapify(2*x+1,n);
            }
            else if ( s[2*x+1] == s[2*x] && s[2*x] > s[x])
            {
                s[2*x] ^= s[x] ^= s[2*x] ^= s[x];
                Heapify(2*x,n);
            }
        }
        else if ( x*2 == n )
        {
            if ( s[2*x] > s[x] )
            {
                s[2*x] ^= s[x] ^= s[2*x] ^= s[x] ;
                Heapify(2*x,n);
            }
        }
    }
    void HeapSort(int n)
    {
        int i,k;
        for ( i = n/2 ; i >= 1 ; i--)
        {
            Heapify(i,n);
        }
        for ( k = n ; k > 1 ; k--)
        {
            s[k] ^= s[1] ^= s[k] ^= s[1];
            Heapify(1,k-1);
        }
    }
    int main()
    {
        int i,n;
        while (scanf("%d",&n),n)
        {
            for ( i = 1 ; i <= n ; i++)
            {
                scanf("%d",&s[i]);
            }
            HeapSort(n);
            for ( i = 1 ; i <= n ; i++)
            {
                if ( i != n ) printf("%d ",s[i]);
                else printf("%d
    ",s[i]);
            }
        }
        return 0;
    }
    

      







     
     
  • 相关阅读:
    css: 组合选择器
    css: 基础选择器
    javascript设计模式:工厂模式
    wx: 小程序公共机制
    vue: 脚手架创建项目
    nodejs: express sequelize-cli
    css:flex和float margin布局
    自定义标签之inclusion_tag
    Django模型之Meta选项详解
    Django内置Admin
  • 原文地址:https://www.cnblogs.com/wc1903036673/p/3499008.html
Copyright © 2011-2022 走看看