62,621
社区成员
发帖
与我相关
我的任务
分享
public class T {
public static void main(String[] args) {
Random r = new Random();
int[] data = new int[11];
boolean[] state = new boolean[11];
for (int i = 0; i < data.length; i++) {
int t = r.nextInt(11);
while (state[t]) {
t = r.nextInt(11);
}
state[t] = true;
data[i] = t;
}
System.out.println(Arrays.toString(data));
Arrays.sort(data);
System.out.println(Arrays.toString(data));
}
}
private void sort(){
int[] iArray = new int[10];
Random random = new Random();
for(int i = 0;i < iArray.length;i++){
iArray[i] = random.nextInt(10);
}
System.out.println("排序前");
printArray(iArray);
insertSort(iArray,"asc");
System.out.println("升序排序后");
printArray(iArray);
insertSort(iArray,"desc");
System.out.println("降序排序后");
printArray(iArray);
}
private void insertSort(int[] data,String sortType){
if(sortType.equals("asc")){ // 正排序,从小排到大
// 比较的轮数
for(int i = 1;i < data.length;i++){
// 保证前i+1个数排好序
for(int j = 0;j < i;j++){
if(data[j] > data[i]){
// 交换在位置j和i两个数
swap(data,i,j);
}
}
}
}else
if(sortType.equals("desc")){ // 倒排序,从大排到小
// 比较的轮数
for(int i = 1;i < data.length;i++){
// 保证前i+1个数排好序
for(int j = 0;j < i;j++){
if(data[j] < data[i]){
// 交换在位置j和i两个数
swap(data,i,j);
}
}
}
}else{
System.out.println("您输入的排序类型错误!");
}
}
/**
* 打印数组
* @param obj
*/
private void printArray(int[] obj){
for(int i = 0;i < obj.length;i++){
System.out.print(obj[i] + "\t");
}
System.out.println();
}
/**
* 交换数组中指定的两元素的位置
*
* @param data
* @param x
* @param y
*/
private void swap(int[] data,int x,int y){
int temp = data[x];
data[x] = data[y];
data[y] = temp;
}
public class Test {
public static void main(String[] args) {
// 从1000的范围内取得10个不重复的随机数
int[] testNumbers = getRandomNumbers(1000, 10);
// 显示排序前的
System.out.println("排序前的数组:");
displayNumbers(testNumbers);
// 排序
Arrays.sort(testNumbers);
// 显示排序后的
System.out.println("排序后的数组:");
displayNumbers(testNumbers);
}
/**
* @param numbers 要显示的数组
*/
public static void displayNumbers(int[] numbers) {
for (int i = 0; i < numbers.length; i++) {
System.out.print(numbers[i] + "\t");
}
System.out.println();
}
/**
* @param:sumNum 要生成的数的范围
* @param:num 生成的个数
* @return int[] 返回生成的不重复的随机数组
*/
public static int[] getRandomNumbers(int sumNum, int num) {
int returnValue[] = null;
if (num <= sumNum) {
returnValue = new int[num];
Random r = new Random();
int temp1, temp2;
// 生成范围数组
int send[] = new int[sumNum];
int len = send.length;
for (int i = 0; i < len; i++) {
send[i] = i + 1;
}
for (int i = 0; i < num; i++) {
temp1 = Math.abs(r.nextInt()) % len;
returnValue[i] = send[temp1];
temp2 = send[temp1];
send[temp1] = send[len - 1];
send[len - 1] = temp2;
len--;
}
}
return returnValue;
}
}