1800 - 基础排序II:插入排序
时间限制 : 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; } } } }