zoukankan      html  css  js  c++  java
  • 算法--排序

    1 冒泡排序

     1 #include<stdio.h>
     2 int main(){
     3     int n,t;
     4     scanf("%d",&n); //n排序总数 
     5     int arr[n];
     6     for(int i=0;i<n;i++)
     7         scanf("%d",&arr[i]);  //输入 
     8     for(int i=0;i<n-1;i++){  //开始排序 
     9         for(int j=0;j<n-i-1;j++){
    10             if(arr[j]>arr[j+1]){    
    11             t=arr[j];
    12             arr[j]=arr[j+1];
    13             arr[j+1]=t;
    14         }
    15     }
    16 }
    17     for(int i=0;i<n;i++)
    18         printf("%d ",arr[i]);  //输出 
    19         return 0;
    20 } 

    2 选择排序

    #include<stdio.h>
    int main(){
        int n,t;
        scanf("%d",&n); //n排序总数 
        int arr[n];
        for(int i=0;i<n;i++)
            scanf("%d",&arr[i]);  //输入 
        for(int i=0;i<n;i++){  //开始排序 
            for(int j=i+1;j<n;j++){
                if(arr[i]>arr[j]){    
                t=arr[i];
                arr[i]=arr[j];
                arr[j]=t;
            }
        }
    }
        for(int i=0;i<n;i++)
            printf("%d ",arr[i]);  //输出 
            return 0;
    } 

    3 插入排序

    #include<stdio.h>
    int main(){
        int n,t;
        scanf("%d",&n); //n排序总数 
        int arr[n];
        for(int i=0;i<n;i++)
            scanf("%d",&arr[i]);  //输入 
        for(int i=0;i<n;i++){  //开始排序 
            for(int j=i+1;j<n;j++){
                if(arr[i]>arr[j]){    
                t=arr[i];
                arr[i]=arr[j];
                arr[j]=t;
            }
        }
    }
        for(int i=0;i<n;i++)
            printf("%d ",arr[i]);  //输出 
            return 0;
    } 

    4 堆排序

    5 归并排序

    6 快速排序

    #include <stdio.h>
    void swap(int a[], int i, int j)
    {
        int t = a[i];
        a[i] = a[j];
        a[j] = t;
    }
    
    int partition(int a[], int p, int r)
    {
        int i = p;
        int j = r + 1;
        int x = a[p];
        while(1){
            while(i<r && a[++i]<x);
            while(a[--j]>x);
            if(i>=j) break;
            swap(a,i,j);
        }
        swap(a,p,j);
        
        return j;
    }
    
    void quicksort(int a[], int p, int r)  
    {
        if(p<r){
            int q = partition(a,p,r);
            quicksort(a,p,q-1);
            quicksort(a,q+1,r);
        }
    }
        
    int main()
    {
        int i;
        int a[] = {5,13,6,24,2,8,19,27,6,12,1,17};
        int N = 12;
        
        quicksort(a, 0, N-1);
        
        for(i=0; i<N; i++) printf("%d ", a[i]);
        printf("
    ");
        
        return 0;
    }

    这个我无良的直接复制过来了。。。

    我就先 列出来。。。

  • 相关阅读:
    [背包问题][二进制优化] Jzoj P4224 食物
    [并查集][排序] Jzoj P4223 旅游
    [哈夫曼树][优先队列] Bzoj P4198 荷马史诗
    [hash][差分][虚树] Jzoj P6011 天天爱跑步
    [dp] Jzoj P6012 荷马史诗
    [dp][递归] Jzoj P4211 送你一棵圣诞树
    [数学] Jzoj P3912 超氧化钾
    堆学习笔记(未完待续)(洛谷p1090合并果子)
    [AC自动机]luogu P2444 病毒
    [概率期望][DP]luogu P3830 随机树
  • 原文地址:https://www.cnblogs.com/p201821440039/p/10515964.html
Copyright © 2011-2022 走看看