数列有序!
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)otal Submission(s): 71373 Accepted Submission(s): 30219
3 3 1 2 4 0 0
1 2 3 4
Source
C语言程序设计练习(三)
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2019
解题思路: 我的想法是逆向查找即从最后一个数开始比较起。
首先比较插入的数与已经排好的数组的最大数,如果插入数(m)大的话就把m给a[n]。若m小的话就开始一个一个的比较,而且把数都向后移动一位,当有数比m的小的话就把m放到数组a[i+1]中。
AC代码:
import java.util.*;
class Main{
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int n=sc.nextInt();
int m=sc.nextInt();
if(n==0&&m==0) return;
int[] a=new int[200];
int i=0;
for(i=0; i<n; i++){
a[i]=sc.nextInt();
}
if(m>a[n-1]){
a[n]=m;
}
else{
i--;
while(a[i]>m){
a[i+1]=a[i];
i--;
}
a[i+1]=m;
}
for(int j=0; j<n; j++){
System.out.print(a[j]+" ");
}
System.out.println(a[n]);
}
}
}