1、冒泡排序:
相邻的两个数相比,如果排序不对时,就对调位置;排序对时,不动。
第一轮比较后,有一个最大的数排到最后
第二轮比较后,又有一个较大数排到倒数第二位。
......
以此类推
11,6,2,8,22,1,98
七个数
第一轮
第1次6,11,2,8,22,1,98
第2次6,2,11,8,22,1,98
第3次6,2,8,11,22,1,98
第4次6,2,8,11,22,1,98
第5次6,2,8,11,1,22,98
第6次6,2,8,11,1,22,98
共6轮 即7-1
第一轮6次,即7-1,第二轮5次,即7-2
public class ArrayDemo4 { public static void main(String[] args) { int[] arr={11,6,2,8,22,1,98,7}; printArr(arr); //排序前 System.out.println(""); bubbleSort(arr); printArr(arr); //排序后 } static void bubbleSort(int[] array){ //排序函数 for(int x=1;x<array.length-1;x++){ //假设有x个元素,一共要比较x-1轮 for(int y=0;y<array.length-x;y++){ //第一次是y-1,第二次是y-2次,第三次是y-3次,第x轮是y-x次 if(array[y]>array[y+1]){ int temp=array[y]; array[y]=array[y+1]; array[y+1]=temp; } } } } public static void printArr(int[] arr){ //打印函数。 for(int i=0;i<arr.length;i++) { if(i!=arr.length-1) //判断非最后一个元素的,输出数组元素,并加逗号。 System.out.print(arr[i]+","); else { //最后一个元素,只输出元素,无逗号 System.out.print(arr[i]); } } } }
输出:
11,6,2,8,22,1,98,7
1,2,6,7,8,11,22,98
2、选择排序
第一轮,第1个数和后面的数相比,按大小排,结果是最小的数排最前
第二轮,第2个数和后面的数相比,按大小排,结果是第二小的数排第二位
......
以此类推
一共n-1轮,因为最后一个数不用比
11,6,2,8,22,1,98
6轮
第一轮 和第2个数开始比
第二轮 和第3个数开始比
......
以此类推
public class ArrayDemo5 { public static void main(String[] args) { int[] arr={11,6,2,8,22,1,98}; selectSort(arr); printArr(arr); } static void selectSort(int[] array){ //定义选择排序函数 for(int x=0; x<array.length-1;x++) //第一个数开始比,比较length-1轮 { for(int y=x+1;y<array.length;y++) //和第几个 { if(array[x]>array[y]){ int temp = array[x]; array[x]=array[y]; array[y]=temp; } } } } public static void printArr(int[] arr){ //定义打印函数。 for(int i=0;i<arr.length;i++) { if(i>=0 & i<arr.length-1) //判断非最后一个元素的,输出数组元素,并加逗号。可以写成i!=arr.length-1 System.out.print(arr[i]+","); else { //最后一个元素,只输出元素,无逗号 System.out.print(arr[i]); } } } }
输出:
1,2,6,8,11,22,98
3、使用API中的排序功能
import java.util.Arrays; //java.util.Arrays;此类包含用来操作数组(比如排序和搜索)的各种方法 public class ArrayDemo6 { public static void main(String[] args) { int[] arr={12,4,6,2,11,7,3,12,61}; Arrays.sort(arr); //Arrays.sort提供了排序方法 printArr(arr); String[] arr1={"Z", "a", "D"}; Arrays.sort(arr1); printArr(arr1); } public static void printArr(int[] arr){ //定义一个整数数组的函数。 for(int i=0;i<arr.length;i++) { if(i>=0 & i<arr.length-1) //判断非最后一个元素的,输出数组元素,并加逗号。可以写成i!=arr.length-1 System.out.print(arr[i]+","); else { //最后一个元素,只输出元素,无逗号 System.out.print(arr[i]); System.out.println(""); } } } public static void printArr(String[] arr){ //定义一个字符串数组的函数。 for(int i=0;i<arr.length;i++) { if(i>=0 & i<arr.length-1) //判断非最后一个元素的,输出数组元素,并加逗号。可以写成i!=arr.length-1 System.out.print(arr[i]+","); else { //最后一个元素,只输出元素,无逗号 System.out.print(arr[i]); System.out.println(""); } } } }
输出:
2,3,4,6,7,11,12,12,61
D,Z,a