Java 数组练习题(2)
1、输入10个整数存入数组,求最大值和最小值
package com.hz.array02;
import java.util.Scanner;
/**
* 1、输入10个整数存入数组,求最大值和最小值
* @author ztw
*
*/
public class Practice01 {
public static void main(String[] args) {
int[] arr = new int[10];
Scanner sc = new Scanner(System.in);
//循环输入10个整数存入数组
for(int i=0;i<arr.length;i++){
System.out.println("输入"+(i+1)+"个整数:");
arr[i]=sc.nextInt();
}
int max=arr[0],min=arr[0];//初始arr[0]为最大值,和最小值
//遍历比较大小
for(int j=0;j<arr.length;j++){
if(max<arr[j]){
max=arr[j];
}
if(min>arr[j]){
min=arr[j];
}
}
System.out.println("最大值:"+max+" 最小值:"+min);
}
}
4、输入10个整数存入数组,然后采冒泡排序后将其输出
package com.hz.array02;
import java.util.Scanner;
/**
* 4、输入10个整数存入数组,然后采冒泡排序后将其输出
* @author ztw
*
*/
public class Practice04 {
public static void main(String[] args) {
int[] arr = new int[10];
Scanner sc = new Scanner(System.in);
//循环输入10个整数存入数组
for(int i=0;i<arr.length;i++){
System.out.println("输入"+(i+1)+"个整数:");
arr[i]=sc.nextInt();
}
//定义外循环
for(int j=0;j<arr.length;j++){
//定义内循环
for(int k=0;k<arr.length-j-1;k++){
if(arr[k]>arr[k+1]){//比较相邻的元素
/*
*用于交换两个元素
*/
int temp = arr[k];
arr[k] = arr[k+1];
arr[k+1] = temp;
}
}
}
System.out.println("冒泡排序后:");
//循环遍历数组
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
System.out.print("\n");
}
}
5、
有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
程序分析:首先判断此数是否大于最后一个数,然后依次向中间数比较,若大于某一个数,则取代它的位置,并使它后面的元素的位置依次后移。然而数组长度固定,但可以通过创建长度足够的新数组存放原数组数值和插入的数来变通地解决问题。
public class p22{
public static void main(String[] args){
int a[] = new int[]{1,6,14,26,46,66,87};
int c[] = fun(a,50); //调用方法处理原数组并用c数组接收方法返回的数组
for(int e:c){ //遍历数组
System.out.print(e+" ");
}
}
static int[] fun(int b[],int p){//创建一个可返回数组的方法
int n = b.length,i,j;
int d[] = new int[n+1];
//完成插入和后排操作
for(i=n-1;i>=0;i--){
if(p<=b[i]){
d[i+1]=b[i];
}
if(p>b[i]){
d[i+1]=p;
for(;i>=0;i--){
d[i]=b[i];
}
break;
}
}
return d;
}
}
————————————————
版权声明:本文为CSDN博主「JavaZwb」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/JavaZwb/article/details/78385613
6、已知数组 int[] a={10,20,30,40,50,60};使用交换反序使数组变成a={60,50,40,30,20,10}
package com.hz.array02;
import java.util.Arrays;
/**
* 6、已知数组
* int[] a={10,20,30,40,50,60};
* 使用交换反序使数组变成a={60,50,40,30,20,10}
* @author ztw
*
*/
public class Practice06 {
public static void main(String[] args) {
shengxu();
System.out.print("\n");
jiangxu();
}
//升序
public static void shengxu(){
int[] a={60,50,40,30,20,10};
//利用Arrays带有的排序方法快速排序
Arrays.sort(a);//进行排序
for(int i:a){
System.out.print(i+" ");
}
}
//降序
public static void jiangxu(){
int[] a={10,20,30,40,50,60};
//利用Arrays带有的排序方法快速排序
Arrays.sort(a);//进行排序
for(int i=a.length-1;i>=0;i--){
System.out.print(a[i]+" ");
}
}
}
11、定义一个长度为10的整型数组,循环输入10个整数。然后判断这个数组中有几个偶数,再定义一个正好能存放这几个偶数的数组,将上一个数组中的所有偶数复制过来。最后循环输出这些偶数。
package com.hz.array02;
import java.util.Arrays;
import java.util.Scanner;
/**
* 11、定义一个长度为10的整型数组,循环输入10个整数。
* 然后判断这个数组中有几个偶数,再定义一个正好能存放这几个偶数的数组,
* 将上一个数组中的所有偶数复制过来。最后循环输出这些偶数。
* @author ztw
*
*/
public class Practice11 {
public static void main(String[] args) {
int[] arr = new int[10];
int[] arr2 = new int[10];
Scanner sc = new Scanner(System.in);
//循环输入10个整数存入数组
for(int i=0;i<arr.length;i++){
System.out.println("输入"+(i+1)+"个整数:");
arr[i]=sc.nextInt();
//判断输入的数是否为偶数
if(arr[i]%2==0){
arr2[i]=arr[i];
}
}
//升序排序遍历数组arr2
Arrays.sort(arr2);
for(int i:arr2){
if(i!=0){
System.out.print(i+" ");
}
}
//遍历数组arr2
// for(int k=0;k<arr2.length;k++){
// System.out.print(arr2[k]+" ");
// }
}
}
12、输入一个数组,使用选择排序输出
package com.hz.array02;
import java.util.Scanner;
/**
* 12、输入一个数组,使用选择排序输出
* @author ztw
*
*/
public class Practice12 {
public static void main(String[] args) {
int[] arr = new int[10];
Scanner sc = new Scanner(System.in);
//循环输入10个整数存入数组
for(int i=0;i<arr.length;i++){
System.out.println("输入"+(i+1)+"个整数:");
arr[i]=sc.nextInt();
}
selectSort(arr);
System.out.println("选择排序后:");
//循环遍历数组
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
System.out.print("\n");
}
//选择排序算法
public static int[] selectSort(int[] arr){
for(int i=0;i<arr.length-1;i++){
int min=i;
for(int j=i+1;j<arr.length;j++){
if(arr[min]>arr[j]){
min=j;
}
}
if(min!=i){
int temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
}
}
return arr;
}
}
13、输入一个数组,使用冒泡排序输出
package com.hz.array02;
import java.util.Scanner;
/**
* 13、输入一个数组,使用冒泡排序输出
* @author ztw
*
*/
public class Practice13 {
public static void main(String[] args) {
int[] arr = new int[10];
Scanner sc = new Scanner(System.in);
//循环输入10个整数存入数组
for(int i=0;i<arr.length;i++){
System.out.println("输入"+(i+1)+"个整数:");
arr[i]=sc.nextInt();
}
bubbleSort(arr);
System.out.println("冒泡排序后:");
//循环遍历数组
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
System.out.print("\n");
}
//冒泡排序算法
public static int[] bubbleSort(int[] arr){
//定义外循环
for(int i=0;i<arr.length;i++){
//定义内循环
for(int j=0;j<arr.length-i-1;j++){
if(arr[j]>arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
return arr;
}
}