Java代码如下:
|   package org.lxh.demo16.common; 
 import java.util.Random; 
 
 /** * implement file: Tfrk.java * desc: 给一个大小为100的(整型)数组,分配0-1000的随机数100个, * 但这100个数不能重复,然后把它从小到大排序,并输出来。(时间10分钟) * @author hemmingway <hemmingway@163.com> * */ public class Tfrk { 
 /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub 
 //采用插入排序法, 产生一个随机数就插入,插入的过程排除重复数字的插入即可 Random random = new Random(); int[] arrayList = new int[101]; int len; //动态记录已分配的数组长度 int j; 
 //initialization arrayList[0] = Math.abs(random.nextInt() % 1000); len = 1; while(true){ int num= Math.abs(random.nextInt() % 1000); for(j = len-1; j > -1 && num < arrayList[j]; j--) ; 
 //检查重复的数字 if( (j == -1 ) || ( j > -1 && num > arrayList[j]) ){ for(int tmp = len-1; tmp > j; tmp-- ){ arrayList[tmp+1] = arrayList[tmp]; } arrayList[j + 1] = num; len++; } 
 //随机分配100个后,就跳出,不再分配 if (len > 99) break; } // end while(true) 
 //打印输出 for (int i = 0; i < 100; i++){ System.out.println( "arrayList[" + i + "]: " + arrayList[i]); } } } 
  | 
C语言代码
|   // Test_rnd.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <stdio.h> #include <time.h> #include <stdlib.h> int main(int argc, char* argv[]) { int arrayList[100]; int len; //动态记录已分配的数组长度 int j; srand((unsigned)time(NULL)); //initialization memset(arrayList, 0, sizeof(arrayList)/sizeof(arrayList[0])); arrayList[0] = rand() % 1000; len = 1; while(true) { int num= rand() % 1000; for(j = len-1; j > -1 && num < arrayList[j]; j--) ; //检查重复的数字 if( (j == -1 ) || ( j > -1 && num > arrayList[j]) ){ for(int tmp = len-1; tmp > j; tmp-- ){ arrayList[tmp+1] = arrayList[tmp]; } arrayList[j + 1] = num; len++; } //随机分配个后,就跳出,不再分配 if (len > 99) break; } // end while(true) for (int i = 0; i<100; i++) { printf("arrayList[%d]: %d\n",i,arrayList[i]); } return 0; }  |