版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/loveyour_1314/article/details/81474504
/**1.从键盘输入8个整数存放在一个数组中,然后将奇数和偶数分别存入到两个不同的数组中,
并按奇数、偶数交替的顺序输出这两个数组中的所有数据(先交替输出,如果奇数个数多,
则再输出剩下的奇数,如果偶数个数多,则再输出剩下的偶数)。*/
public static void outNum() {
int num[] = new int[8];
int odd[];
int even[];
int j = 0, k = 0;
Scanner sc = new Scanner(System.in);
for (int i = 0; i < num.length; i++) {
System.out.println("请输入第" + (i + 1) + "个整数:");
num[i] = sc.nextInt();
}
sc.close();
for (int i = 0; i < num.length; i++) {
if (num[i] % 2 == 0) {
j++;
} else {
k++;
}
}
//获取奇数偶数各个的数组大小,避免浪费内存
even = new int[j];
odd = new int[k];
j = 0;
k = 0;
//根据判断给奇数偶数数组赋值
for (int i = 0; i < num.length; i++) {
if (num[i] % 2 == 0) {
even[j] = num[i];
// System.out.println(j);
j++;
} else {
odd[k] = num[i];
k++;
}
}
//输出
if (even.length > odd.length) { // 偶数多
for (int m = 0; m < odd.length; m++) {
System.out.print(" 奇数 " + odd[m] + " 偶数 " + even[m]);
}
for (int n = odd.length; n < even.length; n++) {
System.out.print(" 偶数 " + even[n]);
}
} else {
for (int m = 0; m < even.length; m++) {
System.out.print(" 奇数 " + odd[m] + " 偶数 " + even[m]);
}
for (int n = even.length; n < odd.length; n++) {
System.out.print(" 奇数 " + odd[n]);
}
}
}
/* 请输入第1个整数:
5
请输入第2个整数:
3
请输入第3个整数:
1
请输入第4个整数:
2
请输入第5个整数:
8
请输入第6个整数:
9
请输入第7个整数:
7
请输入第8个整数:
5
奇数 5 偶数 2 奇数 3 偶数 8 奇数 1 奇数 9 奇数 7 奇数 5*/
/**2.去除数组{1,3,1,4,2,3,6,1,5}中的重复项,存入一个新的数组,并从大到小排序.*/
public static void distinctAndSort() {
int arr[] = { 1, 3, 1, 4, 2, 3, 6, 1, 5 };
Set<Integer> set = new HashSet<>();// 利用set的元素不重复和有序
for (int i = 0; i < arr.length; i++) {
set.add(arr[i]);
}
for (Integer integer : set) {
System.out.println(integer);
}
}
//1 2 3 4 5 6
/**3.编写一个方法,能够实现对一个二维数组a进行升序排列,要求整个二维数组中最小的值为a[0][0],
然后依次是a[0][1],a[0][2]….,a[1][0],a[1][1]…..,使用一个无序的二维数组对你编写的方法进行检验。*/
public static void twoDimensionalArraySort(int arr[][]) {
int n = 0;
//计算二维数组的长度
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
n++;
}
}
//定义一个一维数组,将二维数组遍历进去
int new_arr[] = new int[n];
int k = 0;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
new_arr[k] = arr[i][j];
k++;
}
}
//排序
Arrays.sort(new_arr);
//将一维数组元素放回二维数组
k = 0;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
arr[i][j] = new_arr[k];
k++;
}
}
//打印输出
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
/*
* int arr1[][]={{5,8,4},{65,45,2},{6,0,8}};
twoDimensionalArraySort(arr1);
* 0 2 4
5 6 8
8 45 65
*/
/**4.编写一个程序,提示用户输入10名学生的姓名和成绩,然后按照成绩降序排序输出学生姓名*/
public static void stuSortDesc() {
Scanner sc = null;
String[] stu = new String[10];
int[] grade = new int[10];
//录入数据
for (int i = 0; i < 5; i++) {
sc = new Scanner(System.in);
System.out.println("请输入第"+(i+1)+"个学生的姓名:");
stu[i] = sc.nextLine();
System.out.println("请输入第"+(i+1)+"个学生的成绩:");
grade[i] = sc.nextInt();
}
sc.close();
//调用快排法
quickSort(grade,stu, 0 ,grade.length-1);
for (int i = 0; i <grade.length; i++) {
System.out.println(stu[i]+"的成绩为:"+grade[i]);
}
}
// 快速排序对成绩和学生姓名进行排序
public static void quickSort(int array[], String arr[], int low, int high) {
int pivot, p_pos, i, t;
String t1;
if (low < high) {
p_pos = low;
pivot = array[p_pos];
for (i = low + 1; i <= high; i++)
if (array[i] > pivot) {
p_pos++;
t = array[p_pos];
t1 =arr[p_pos];
array[p_pos] = array[i];
array[i] = t;
t1 = arr[p_pos];
arr[p_pos] = arr[i];
arr[i] = t1;
}
t = array[low];
t1 = arr[low];
array[low] = array[p_pos];
arr[low] = arr[p_pos];
array[p_pos] = t;
arr[p_pos] = t1;
// 分而治之
quickSort(array,arr, low, p_pos - 1);// 排序左半部分
quickSort(array,arr, p_pos + 1, high);// 排序右半部分
}
}
/*
* 请输入第1个学生的姓名:
a
请输入第1个学生的成绩:
55
请输入第2个学生的姓名:
b
请输入第2个学生的成绩:
99
请输入第3个学生的姓名:
c
请输入第3个学生的成绩:
65
请输入第4个学生的姓名:
d
请输入第4个学生的成绩:
22
请输入第5个学生的姓名:
e
请输入第5个学生的成绩:
88
b的成绩为:99
e的成绩为:88
c的成绩为:65
a的成绩为:55
d的成绩为:22
*/
/**5.在歌唱比赛中,共有10位评委进行打分,在计算歌手得分时,去掉一个最高分,去掉一个最低分,
然后剩余的8位评委的分数进行平均,就是该选手的最终得分。输入每个评委的评分,求某选手的得分。*/
public static void score(int[] arr) {
int len = arr.length ;
//调用冒泡排序
bubbleSort(arr);
// 删除最低和最高分
arr[len-1] = arr[len - 2];
//数组缩容
arr = Arrays.copyOf(arr, arr.length - 1);
arr[0] = arr[1];
arr = Arrays.copyOf(arr, arr.length - 1);
//求总和
int sum = 0;
for (int j = 0; j < arr.length; j++) {
sum = sum + arr[j];
}
System.out.println(sum /arr.length);
}
//排序工具方法:冒泡
public static void bubbleSort(int array[]) {
int t = 0;
for (int i = 0; i < array.length - 1; i++)
for (int j = 0; j < array.length - 1 - i; j++)
if (array[j] > array[j + 1]) {
t = array[j];
array[j] = array[j + 1];
array[j + 1] = t;
}
}
/*
* int[] arr = {9,5,8,7,4,5,1,9,10,2} ;//第五题
score(arr);
5
*/
public static void main(String[] args) {
// outNum(); //第一题
// distinctAndSort();//第二题
// int arr1[][]={{5,8,4},{65,45,2},{6,0,8}};
// twoDimensionalArraySort(arr1);
// stuSortDesc();//第四题
// int[] arr = {9,5,8,7,4,5,1,9,10,2} ;//第五题
// score(arr);
}