前言:主要为个人笔记
package com.lgb;
import java.util.Arrays;public class ArraysTest2 {
public static void main(String[] args) {
int[] arr= {2,65,1,77,3,9};
printArr(arr);
//arrSelect(arr); //选择排序法
//arrMao(arr); //冒泡排序法
Arrays.sort(arr); //开发时,调用Arrays.sort进行排序
printArr(arr);
}
/*
* 冒泡排序法
* */
外循环:0-1 1-2 2-3 3-4 4-5 ,如果0比1大那么0与1交换,小的往前一格大的后退一格。以此类推,第一次循环5位最大值
0-1 1-2 2-3 3-4 ,因为最大值选出来了,接下来不需要算上5,所以外循环arr.length-1
0-1 1-2 2-3 ,以此类推
内循环:如果为y=5,就会与6比较,所以-1,最大为4比5。发现随着外循环x的自增,排序次数自减,所以减去x
public static void arrMao(int[] arr) {
for (int x = 0; x < arr.length-1; x++) {
for(int y=0;y<arr.length-1-x;y++) {
if (arr[y]>arr[y+1]) {
int temp=arr[y];
arr[y]=arr[y+1];
arr[y+1]=temp;
}
}
}
}
/*
* 选择排序法
* */
外循环: 先以角标为0去比较,凡是比角标0小的都与角标0比较,以此选出最小的。接下来以角标1比较,凡是比角标1小的与角标1交换,选出第二小的。以此类推,选完了0 1 2 3 4,从小到大,那么5也就不需要了。所以-1,如果写上也没关系。只不过平白多出了一次运算
内循环:第一次比较是0与1比,第二次则是0与2比。所以y=x+1,在第一次循环的时候就为1,接下来自增
public static void arrSelect(int[] arr) {
for(int x=0;x<arr.length-1;x++) {
for(int y=x+1;y<arr.length;y++) {
if (arr[x]>arr[y]) {
int temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
}
}
}
/*
* 打印
* */
public static void printArr(int[] arr) {
for(int i=0;i<arr.length;i++) {
if (i==arr.length-1) {
System.out.println(arr[i]);
}else {
System.out.print(arr[i]+",");
}
}
}
}
本小白刚学java不久,有许多不足,欢迎大佬指出,在下也会不断的努力,修正错误。浇下的时间与心思,终有一天会在不知不觉中开花。