蓝桥杯2014年以前JAVA历年真题及答案整理——数列排序

问题描述

给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200

输入格式

第一行为一个整数n。第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。

输出格式

输出一行,按从小到大的顺序输出排序后的数列。

样例输入

       5
       8 3 6 4 9

样例输出

       3 4 6 8 9

java实现:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static void main (String args[])throws Exception{
    BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));
    int n=Integer.parseInt(buf.readLine());
    String s=buf.readLine();
    String s1[]=s.split(" ");
    StringBuffer sb=new StringBuffer();
    int a[]=new int[n];
    for(int i=0;i

C实现:

#include 

void swap(int* a, int *b)
{
    int c = *a;
    *a = *b;
    *b = c;
}

void sort(int* arr, int len)
{
    if (len <= 1) return;
    int x = arr[len-1];
    int i = 0, j = 0;
    while (j < len - 1)
    {
        if (arr[j] < x)
            swap(&arr[i++], &arr[j]);
        j++;
    }
    swap(&arr[i], &arr[len-1]);
    sort(arr, i);
    sort(arr + i + 1, len - i - 1);
}

int main()
{
    int i, n, a[200];
    scanf("%d", &n);
    for (i = 0; i < n; i++) scanf("%d", &a[i]);
    sort(a, n);
    for (i = 0; i < n; i++) printf("%d ", a[i]);
    printf("\n");
    return 0;
}



你可能感兴趣的:(蓝桥杯历年试题专栏)