欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

day13Java-常用对象Array05-数组高级01

程序员文章站 2022-05-09 13:15:55
...

常用对象Array05-数组高级

一定要注意外循环是控制循环次数,内循环是控制数组中的元素。切记切记…
因为时间关系我只写了的冒泡和选择排序,后续我会加上其他算法排序。

冒泡排序

数组排序之冒泡排序:
相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处
通过代码分析

// 第一次比较
// arr.length - 1是为了防止数据越界
// arr.length - 1 - 0是为了减少比较的次数
for (int x = 0; x < arr.length - 1 - 0; x++) {
	if (arr[x] > arr[x + 1]) {
		int temp = arr[x];
		arr[x] = arr[x + 1];
		arr[x + 1] = temp;
	}
}
System.out.println("第一次比较后:");
arrToString(arr);

// 第二次比较
// arr.length - 1是为了防止数据越界
// arr.length - 1 - 1是为了减少比较的次数
for (int x = 0; x < arr.length - 1 - 1; x++) {
	if (arr[x] > arr[x + 1]) {
		int temp = arr[x];
		arr[x] = arr[x + 1];
		arr[x + 1] = temp;
	}
}
System.out.println("第二次比较后:");
arrToString(arr);

// 第三次比较
// arr.length - 1是为了防止数据越界
// arr.length - 1 - 2是为了减少比较的次数
for (int x = 0; x < arr.length - 1 - 2; x++) {
	if (arr[x] > arr[x + 1]) {
		int temp = arr[x];
		arr[x] = arr[x + 1];
		arr[x + 1] = temp;
	}
}
System.out.println("第三次比较后:");
arrToString(arr);

// 第四次比较
// arr.length - 1是为了防止数据越界
// arr.length - 1 - 3是为了减少比较的次数
for (int x = 0; x < arr.length - 1 - 3; x++) {
	if (arr[x] > arr[x + 1]) {
		int temp = arr[x];
		arr[x] = arr[x + 1];
		arr[x + 1] = temp;
	}
}
System.out.println("第四次比较后:");
arrToString(arr);

代码重复度太高使用循环改进
冒泡排序具体代码演示

public class BubbleArraySort {

    public static void main(String[] args) {
        //定义一个数组
        int[] arr = {24, 69, 80, 57, 13};
        //打印没有排序的
        System.out.println("没有排序"+arrToString(arr));
        //调用冒泡排序
        int[] arr1 = bubbleSort(arr);
        String s = arrToString(arr1);
        System.out.println("排序之后"+s);
    }

    //冒泡排序
    public static int[] bubbleSort(int[] arr) {
        //arr.length-1:是防止索引越界
        for (int y = 0; y < arr.length - 1; y++) {
            for (int x = 0; x < arr.length - 1 - y; x++) {
                if (arr[x] > arr[x + 1]) {
                    int temp = arr[x];
                    arr[x] = arr[x + 1];
                    arr[x + 1] = temp;
                }
            }
        }
        return arr;
    }
    
    //toString方法
    public static String arrToString(int[] arr) {
        String s="[";
        for (int x = 0; x <arr.length ; x++) {
            if(x==arr.length-1) {
                s+=arr[x]+"]";
            }else{
                s+=arr[x]+",";
            }
        }
        return s;
    }
}

冒泡排序图解
day13Java-常用对象Array05-数组高级01

选择排序

数组排序之选择排序:
从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处
通过代码分析

// 第一次
		int x = 0;
		for (int y = x + 1; y < arr.length; y++) {
			if (arr[y] < arr[x]) {
				int temp = arr[x];
				arr[x] = arr[y];
				arr[y] = temp;
			}
		}
		System.out.println("第一次比较后:");
		arrToString(arr);

		// 第二次
		x = 1;
		for (int y = x + 1; y < arr.length; y++) {
			if (arr[y] < arr[x]) {
				int temp = arr[x];
				arr[x] = arr[y];
				arr[y] = temp;
			}
		}
		System.out.println("第二次比较后:");
		arrToString(arr);

		// 第三次
		x = 2;
		for (int y = x + 1; y < arr.length; y++) {
			if (arr[y] < arr[x]) {
				int temp = arr[x];
				arr[x] = arr[y];
				arr[y] = temp;
			}
		}
		System.out.println("第三次比较后:");
		arrToString(arr);

		// 第四次
		x = 3;
		for (int y = x + 1; y < arr.length; y++) {
			if (arr[y] < arr[x]) {
				int temp = arr[x];
				arr[x] = arr[y];
				arr[y] = temp;
			}
		}
		System.out.println("第四次比较后:");
		arrToString(arr);

代码重复度太高使用循环改进
选择排序代码演示

public class SelectArraySort {
    public static void main(String[] args) {
        //定义一个数组
        int[] arr = {24, 69, 80, 57, 13};
        System.out.println("排序之前" + arrToString(arr));
        //调用选择拍讯
        int[] arr1 = arrToSelectSort(arr);
        String s = arrToString(arr1);

        System.out.println("排序之后"+s );
    }

    //选择排序
    public static int[] arrToSelectSort(int[] arr) {
        for (int y = 0; y < arr.length - 1; y++) {
            for (int x =y+1; x < arr.length; x++) {
                if (arr[y] > arr[x]) {
                    int temp = arr[x];
                    arr[x] = arr[y];
                    arr[y] = temp;
                }
            }
        }
        return arr;
    }
    //toString方法
    public static String arrToString(int[] arr) {
        String s = "[";
        for (int x = 0; x < arr.length; x++) {
            if (x == arr.length - 1) {
                s += arr[x] + "]";
            } else {
                s += arr[x] + ",";
            }
        }
        return s;
    }
}

结果:

排序之前[24,69,80,57,13]
排序之后[13,24,57,69,80]

选择排序图解
day13Java-常用对象Array05-数组高级01

相关标签: Java相关知识