1800 - 基础排序II:插入排序

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

此题为插入排序


此题用作练习题,请用插入排序完成此题。

题目输入

第一行输入一个整数n(0<n<=100000),表示有n个待排序数据;
随后的n行每行输入一个整数。

题目输出

升序输出排序结果


输入/输出样例

输入格式

10
10 9 8 7 6 5 4 3 2 1

输出格式

1 2 3 4 5 6 7 8 9 10

C语言解答

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int N;
    scanf("%d",&N);
    int i,j,a[N+1];
    for(i=1;i<N+1;i++)
    {
        scanf("%d",a+i);

    }


    for(i=2;i<N+1;++i)
    {
        if(a[i-1]>a[i])
        {
             a[0]=a[i];
             a[i]=a[i-1];
             for(j=i-2;a[0]<a[j];--j)
             {
                 a[j+1]=a[j];
             }
             a[j+1]=a[0];
        }

    }
    for(i=1;i<N+1;i++)
        printf("%d ",*(a+i));
    printf("\n");
    return 0;
}

C++解答

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<string>
#include<cstring>
#include<iomanip>
#include<algorithm>
using namespace std;
int a[100001],n,i;
int main(){
	scanf("%d",&n);
	for(i=1;i<=n;i++) scanf("%d",&a[i]);
	sort(a+1,a+1+n);
	for(i=1;i<=n;i++) printf("%d ",a[i]);
	cout<<endl;
	return 0;
}

Java解答

import java.util.Scanner;
public class Main
{
	public static void main(String[] args)
	{
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		int arr[]=new int[n];
		for(int i=0;i<n;i++)
		{
			arr[i]=sc.nextInt();
		}
		insertSort(arr);
		for(int i=0;i<n-1;i++)
		{
			System.out.print(arr[i]+" ");
		}
		System.out.println(arr[n-1]);
	}
	public static void insertSort(int arr[])
	{
	    for (int i = 1; i < arr.length; i++)
	    {
	        if (arr[i - 1] > arr[i])
	        {
	            int temp = arr[i];
	            int j = i;
	            while (j > 0 && arr[j - 1] > temp)
	            {
	                arr[j] = arr[j - 1];
	                j--;
	            }
	            arr[j] = temp;
	        }
	    }
	}
}