数组的高级操作(冒泡排序,选择排序,数组工具类,练习)
一:冒泡排序
1.2 冒泡排序基本概念是:
相邻的两个元素进行比较,小的放前面,大的放后面
1.3 画图讲解冒泡排序,int[] arr = { 24, 69, 80, 57, 13 };
1.4 文字分析比较过程
第一次比较:比较了4次,最大的值放到了最后
第二次比较:比较了3次,次大的值放到了倒数第二,依次类推。
举个例子:从键盘输入10个数字,用冒泡排序进行从小到大的排序
源代码如下:
package com.study01;
import java.util.Arrays;
import java.util.Scanner;
/*
* 从键盘输入10个数字,用冒泡排序进行从小到大的排序
*/
public class DemoSort {
public static void main(String[] args) {
System.out.println("Please input number:");
int []arr=new int [10];
for(int i=0;i<=9;i++){
Scanner sc=new Scanner(System.in);
arr[i]=sc.nextInt();
}
for(int i=0;i<arr.length-1;i++){
for(int j=0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}System.out.println(Arrays.toString(arr));
}
}
这里需要注意越界问题,要分清数组索引和实际值,因为Java数组首元素为a[0],所以容易引起模糊。另外我在最后的输出语句调用的是String的方法,这就使得转化为转化为字符串来说相对容易,并且不用去写一个字符串输出函数函数专门去调用。
字符串输出函数:public static void printArray(int []arr){
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}//在写Java程序的时候一定要注意大括号匹配的问题,要有清楚的思维。
二:选择排序:
2.1 选择排序概念:
* 选择排序:
* 从0索引开始,依次和后面的每一个元素进行比较
* 第一次比较完毕,最小值出现在了最小索引处
* 第二次比较完毕,次小值出现在了次小索引处
* ...
* 完毕后,就排序了。
2.2 画图讲解选择排序规则
2.3 运用选择排序int[] arr = { 24, 69, 80, 57, 13 };进行排序
举个例子:
package com.study01;
/*
* 运用选择排序int[]arr = { 24, 69, 80, 57, 13 };进行排序
*/
public class DemoSort2 {
public static void main(String[] args) {
int []arr={24,69,80,57,13};
for(int i=0;i<arr.length-1;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[i]>arr[j]){
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}printArray(arr);
}public static void printArray(int[] arr){
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
}
三:Arrays数组工具类
3.1 针对数组进行操作的工具类。提供了排序,转换等功能。
3.2
* 成员方法:
* public static String toString(int[] a):把数组转成字符串
* public static void sort(int[] a):对数组进行排序(有重载)
public static String toString(int[] a):把数组转成字符串的例子:
package com.study02;
import java.util.Arrays;
public class ArraysDemo2 {
public static void main(String[] args) {
int []arr={1,2,34,5};
String arrStr=Arrays.toString(arr);
System.out.println(arrStr);
char []chs={'w','u','j','i'};
String chsStr=Arrays.toString(chs);
System.out.println(chsStr);
}
}
public static void sort(int[] a):对数组进行排序(有重载)的例子:
package com.study02;
import java.util.Arrays;
public class DemoArrays {
public static void main(String[] args) {
int[] arr={4,8,2,0,9};
Arrays.sort(arr);
printArr(arr);
char[]chs={'w','d','r','a','o'};
Arrays.sort(chs);
printArr(chs);
}
public static void printArr(int[]arr){
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}System.out.println();
}public static void printArr(char[]chs){
for(int i=0;i<chs.length;i++){
System.out.print(chs[i]+" ");
}System.out.println();
}
}