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; } |