zoukankan      html  css  js  c++  java
  • 备战考研算法笔记(四)快速排序

    题目描述:

        对输入的n个数进行排序并输出。

    输入:

        输入的第一行包括一个整数n(1<=n<=100)。
        接下来的一行包括n个整数。

    输出:

        可能有多组测试数据,对于每组数据,将排序后的n个整数输出,每个数后面都有一个空格。
        每组测试数据的结果占一行。

    样例输入:
    4
    1 4 3 2
    样例输出:
    1 2 3 4 

     1 #include <stdio.h>
     2 #include "StdAfx.h"
     3 #include <malloc.h>
     4 
     5 //快速排序
     6 void quick_sort(int s[], int l, int r)
     7 {
     8     if (l < r)
     9     {
    10               //Swap(s[l], s[(l + r) / 2]); //将中间的这个数和第一个数交换 参见注1
    11         int i = l, j = r, x = s[l];
    12         while (i < j)
    13         {
    14             while(i < j && s[j] >= x) // 从右向左找第一个小于x的数
    15                             j--; 
    16             if(i < j)
    17                             s[i++] = s[j];
    18                     
    19             while(i < j && s[i] < x) // 从左向右找第一个大于等于x的数
    20                             i++; 
    21             if(i < j)
    22                             s[j--] = s[i];
    23         }
    24         s[i] = x;
    25         quick_sort(s, l, i - 1); // 递归调用
    26         quick_sort(s, i + 1, r);
    27     }
    28 }
    29 
    30 int main()
    31 {
    32   int length;
    33   while(scanf("%d",&length)!=EOF)
    34   {
    35     int *s;
    36     s=(int*)malloc(length*sizeof(int));
    37     for(int i=0;i<length;i++)
    38     {
    39         scanf("%d",&s[i]);
    40     }
    41     //printf("
    ");
    42     quick_sort(s,0,length-1);
    43     for(int i=0;i<length;i++)
    44     {
    45         printf("%d ",s[i]);
    46     }
    47     printf("
    ");
    48   }
    49 }
  • 相关阅读:
    BSGS
    斯特林数 笔记
    「CF932E」Team Work
    「hihoCoder1869」Items
    「Luogu1345」[USACO5.4]奶牛的电信Telecowmunication
    「Luogu4363/BZOJ5248」[九省联考2018]一双木棋chess
    「Luogu2522」[HAOI2011]Problem b
    狄利克雷卷积学习笔记
    莫比乌斯函数学习笔记
    欧拉函数学习笔记
  • 原文地址:https://www.cnblogs.com/ligen/p/3242246.html
Copyright © 2011-2022 走看看