您的位置:首页 > 编程语言 > Java开发

java学习之路 - 面向对象编程-数组-练习题(3)

2016-07-31 22:47 507 查看
public class ArrayTest {
//创建一个包含十个int型数据的数组,int型元素为1-20之内随机数,并求和、最大值、最小值、并遍历输出
public static void main(String[] args) {
int[] arr = new int[8];
for (int i = 0; i < arr.length; i++) {
arr[i] = (int)(Math.random() * 20);
}
// 遍历
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();

// 求和
int sum = 0;
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
}
// 求最大值
int max = arr[0];
for (int i = 0; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
// 求最小值
int min = arr[0];
for (int i = 0; i < arr.length; i++) {
if (arr[i] < min) {
min = arr[i];
}
}
System.out.println("sum:" + sum + ",max:" + max + ",min:" + min);

// 遍历
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
}
}

class ArrayTest2 {

public static void main(String[] args) {
int[] arr = new int[8];
for (int i = 0; i < arr.length; i++) {
arr[i] = (int)(Math.random() * 20);
}

// 遍历
for (int i = 0; i < arr.length; i++) { // 经典for循环
int var = arr[i];
System.out.print(var + " ");
//var = 10000 * i; 赋值不会影响数组元素的值
}
System.out.println();

// 增强型for循环, 仅用于遍历数组, 对于数组的访问是只读的
/*
for (元素类型 变量 : 数组名) {
System.out.println(变量);
}*/

for (int var : arr) {
System.out.print(var + " ");
//var = 1000 * i;
}

}
}
class ArrayTest3 {
//根据下标找出最大值、最小值
public static void main(String[] args) {
int[] arr = new int[8];
for (int i = 0; i < arr.length; i++) {
arr[i] = (int)(Math.random() * 20);
}
//遍历
for (int var : arr) {
System.out.print(var + " ");
}
System.out.println();
//0 1 2 3 4 5  6  7
//2 6 9 0 5 11 18 0
// 最大值下标为6

int maxValueIndex = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] > arr[maxValueIndex]) {
maxValueIndex = i;
}
}
System.out.println("最大值:" + arr[maxValueIndex]);
int minValueIndex = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] < arr[minValueIndex]) {
minValueIndex = i;
}
}
System.out.println("最小值:" + arr[minValueIndex]);
}
}
class ArrayTest4 {

public static void main(String[] args) {
int[] arr = new int[8];
for (int i = 0; i < arr.length; i++) {
arr[i] = (int)(Math.random() * 20 - 100);
}
//遍历
for (int var : arr) {
System.out.print(var + " ");
}
System.out.println();
//9 13 7 13 17 14 11 5
int max = 0x80000000;
for (int i = 0; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
System.out.println("max:" + max);
int min = 0x7fffffff;
for (int i = 0; i < arr.length; i++) {
if (arr[i] < min) {
min = arr[i];
}
}
System.out.println("min:" + min);
}
}
class ArrayTest5 {
//数组复制
public static void main(String[] args) {
int[] arr = new int[8];
for (int i = 0; i < arr.length; i++) {
arr[i] = (int)(Math.random() * 20);
}
//遍历
for (int var : arr) {
System.out.print(var + " ");
}
System.out.println();

//0 1 2 3 4 5 6  7
//2 1 0 6 9 2 12 3
//数组复制
//0 1 2 3 4 5 6  7
//0 0 0 0 0 0 0  0
//2 1 0 6 9 2 12 3
int[] arr2 = new int[arr.length];
for (int i = 0; i < arr.length; i++) {
arr2[i] = arr[i];
}
//遍历
for (int var : arr2) {
System.out.print(var + " ");
}
System.out.println();
}
}
class ArrayTest6 {
//获取子数组
public static void main(String[] args) {
int[] arr = new int[8];
for (int i = 0; i < arr.length; i++) {
arr[i] = (int)(Math.random() * 20);
}
//遍历
for (int var : arr) {
System.out.print(var + " ");
}
System.out.println();

//0 1 2 3 4 5 6  7
//2 1 0 6 9 2 12 3
//获取子数组
//0 1 2 3
//0 0 0 0
//2 1 0 6
int[] child = new int[arr.length / 2];
for (int i = 0; i < child.length; i++) { // 循环次数以容量小的为准
child[i] = arr[i];
}

for (int var : child) {
System.out.print(var + " ");
}
System.out.println();
}
}
class ArrayTest7 {
//对老数组进行赋值
public static void main(String[] args) {
int[] arr = new int[8];
for (int i = 0; i < arr.length; i++) {
arr[i] = (int)(Math.random() * 20);
}
//遍历
for (int var : arr) {
System.out.print(var + " ");
}
System.out.println();

//0 1 2 3 4 5 6  7
//2 1 0 6 9 2 12 3
//扩容
//0 1 2 3 4 5 6  7 8 9 			15
//0 0 0 0 0 0 0  0 0 0 0 0 0 0 0 0
//2 1 0 6 9 2 12 3 0 0 0 0 0 0 0 0
int[] bigger = new int[arr.length * 2];
for (int i = 0; i < arr.length; i++) {
bigger[i] = arr[i];
}
arr = bigger;

//遍历
for (int var : arr) {
System.out.print(var + " ");
}
System.out.println();
}
}
class ArrayTest8 {
//将所有偶数放入新的数组
public static void main(String[] args) {
int[] arr = new int[8];
for (int i = 0; i < arr.length; i++) {
arr[i] = (int)(Math.random() * 20);
}
//遍历
for (int var : arr) {
System.out.print(var + " ");
}
System.out.println();

//0 1 2 3 4 5 6  7
//2 1 0 6 9 2 12 3
//取出所有偶数,存入一个新数组
//0 1 2 3 4  5 6 7
//0 0 0 0 0  0 0 0
//2 0 6 2 12 0 0 0
//最终数组
//0 1 2 3 4
//0 0 0 0 0
//2 0 6 2 12
int[] newArr = new int[arr.length];
int count = 0; // 最关键变量, 用于指示新数组中赋值的下标
for (int i = 0; i < arr.length; i++) {
if (arr[i] % 2 == 0) {
newArr[count] = arr[i];
count++; // 赋完值后,自增,用于下一次再往数组中保存值时的新下标
}
}
int[] finalArr = new int[count]; // 最后count值就是新数组中的有效元素个数
for (int i = 0; i < count; i++) { // 依次把所有有效元素存入最终数组中即可
finalArr[i] = newArr[i];
}
//遍历
for (int var : finalArr) {
System.out.print(var + " ");
}
System.out.println();
// 把所有奇数提取成一个新的子数组
}
}
class ArrayTest9 {
//实现数组的反转
public static void main(String[] args) {
int[] arr = new int[8];
for (int i = 0; i < arr.length; i++) {
arr[i] = (int)(Math.random() * 20);
}
//遍历
for (int var : arr) {
System.out.print(var + " ");
}
System.out.println();

//0 1 2 3 4 5 6  7
//2 1 0 6 9 2 12 3
//反转
//3 12 2 9 6 0 1 2
for (int i = 0; i < arr.length / 2; i++) {
// 交换i位置和arr.length - 1 -i位置的元素
int tmp = arr[i];
arr[i] = arr[arr.length - 1 - i];
arr[arr.length - 1 - i] = tmp;
}
//遍历
for (int var : arr) {
System.out.print(var + " ");
}
System.out.println();
}
}
class ArrayTest10 {
//数组排序算法,冒泡排序
public static void main(String[] args) {
int[] arr = new int[8];
for (int i = 0; i < arr.length; i++) {
arr[i] = (int)(Math.random() * 20);
}
//遍历
for (int var : arr) {
System.out.print(var + " ");
}
System.out.println();

// 外循环控制比较交换的趟数, 需要处理数组长度-1趟
for (int j = 0; j < arr.length - 1; j++) {
// 内循环处理每趟中比较交换的次数
for (int i = 0; i < arr.length - 1 - j; i++) { // 总是从最左边开始处理, 比较i位置和右边相邻位置的元素的值
if (arr[i] > arr[i + 1]) { // 如果左大右小, 进行交换
int tmp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = tmp;
}
}
}

//遍历
for (int var : arr) {
System.out.print(var + " ");
}
System.out.println();
}
}

class ArrayTest11 {
//java自带的方法,改良版快速排序
public static void main(String[] args) {
int[] arr = new int[8];
for (int i = 0; i < arr.length; i++) {
arr[i] = (int)(Math.random() * 20);
}
//遍历
for (int var : arr) {
System.out.print(var + " ");
}
System.out.println();

Arrays.sort(arr); // 改良版快速排序

//遍历
for (int var : arr) {
System.out.print(var + " ");
}
System.out.println();

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐