美文网首页
1076 排序

1076 排序

作者: star_night | 来源:发表于2017-04-19 13:02 被阅读0次

    题目描述 Description

    给出n和n个整数,希望你从小到大给他们排序

    输入描述 Input Description

    第一行一个正整数n
    第二行n个用空格隔开的整数

    输出描述 Output Description

    输出仅一行,从小到大输出n个用空格隔开的整数

    样例输入 Sample Input

    3
    3 1 2

    样例输出 Sample Output

    1 2 3

    数据范围及提示 Data Size & Hint

    1<=n<=100000

    代码

    冒泡排序
    #include<stdio.h>
    int a[100001];
    int main()
    {
        int n;
        scanf("%d",&n);
        int i;
        for(i=0;i<n;i++)
            scanf("%d",a+i);
        int j,k,max;
        for(j=0;j<n-1;j++){
            for(k=0;k<n-j-1;k++){
                if(a[k]>a[k+1]){
                    max=a[k];
                    a[k]=a[k+1];
                    a[k+1]=max;
                }
            }
        }
        for(j=0;j<n;j++){
          printf("%d",a[j]);
          if(j!=n-1)
            printf(" ");
        }
        return 0;
    }
    
    c自带函数sort
    #include<stdio.h>
    #include<stdlib.h>//函数在此头文件中
    int comp(const void *a,const void *b)
    {
    return *(int*)a-*(int*)b;//升序
    //return *(int *)b-*(int *)a;降序
    }
    int main()
    {
      int n,a[100000];
      scanf("%d",&n);
      int i;
      for(i=0;i<n;i++)
        scanf("%d",&a[i]);
      qsort(a,n,sizeof(a[0]),comp);
      for(i=0;i<n;i++)
        printf("%d ",a[i]);
      return 0;
    }
    
    快排
    #include <stdio.h>
    int a[100005], n;
    void quicksort(int left,int right)
    {
        int i, j, base;
        i = left;
        j = right;
        base = a[(i+j) / 2];
        while (i <= j){
            while (a[i] < base) i++;
            while (a[j] > base) j--;
            if (i<=j){
                int t = a[i];
                a[i] = a[j];
                a[j] = t;
                i++;
                j--;
            }
        }
        if (left < j)
          quicksort(left, j);
        if (i < right)
          quicksort(i, right);
    }
    int main(void)
    {
      int i;
      scanf("%d",&n);
      for(i = 0; i < n; i++)
        scanf("%d", &a[i]);
      quicksort(0, n - 1);
      for(i = 0; i < n; i++){
        printf("%d",a[i]);
        if(i<n-1)
          printf(" ");
      }
      printf("\n");
      return 0;
    }
    

    相关文章

      网友评论

          本文标题:1076 排序

          本文链接:https://www.haomeiwen.com/subject/mbtczttx.html