今天好晚了,明天一定补上今天这一课!!困~~
Java.util.Arrays是Java集成好的用于数组排序的算法。
1 package com.baidu.java; 2 3 import java.util.Arrays; 4 5 //排序算法 6 public class TestPXSF { 7 public static void main(String[] args) { 8 //0.排序算法Java有集成好的算法 9 int[] arr1=new int[]{1,-4,5,-38,-4,0,50}; 10 //遍历 11 System.out.println("使用Java集成好的算法排序arr1前:"); 12 for(int i=0;i<arr1.length;i++){ 13 System.out.print(arr1[i]+" "); 14 } 15 Arrays.sort(arr1);//排序算法 16 System.out.println(" 使用Java集成好的算法排序arr1后:"); 17 for(int i=0;i<arr1.length;i++){ 18 System.out.print(arr1[i]+" "); 19 } 20 //1.冒泡排序的算法 21 //声明一个数组对其中元素排序 22 int[] arr=new int[]{1,-5,10,30,-53,18,100,-6,-5,18,26}; 23 int[] arr2=new int[]{1,-4,5,-38,-4,0,50}; 24 System.out.println(" 排序之前的遍历:"); 25 for(int i=0;i<arr.length;i++){ 26 System.out.print(arr[i]+" "); 27 } 28 //对数组进行冒泡排序 29 for(int i=0;i<arr.length-1;i++){//冒泡排序走arr.length-1趟 30 for(int j=0;j<arr.length-1-i;j++){//每趟比较的次数 31 //从头比较相邻的两个数,若前边的大,则交换 32 if(arr[j]>arr[j+1]){ 33 int temp=0; 34 temp=arr[j]; 35 arr[j]=arr[j+1]; 36 arr[j+1]=temp; 37 } 38 } 39 } 40 41 System.out.println(" 排序之后的遍历:"); 42 for(int i=0;i<arr.length;i++){ 43 System.out.print(arr[i]+" "); 44 } 45 //2.用直接选择排序对arr2进行排序 46 System.out.println(" 直接选择排序排序前遍历arr2:"); 47 for(int i=0;i<arr2.length;i++){ 48 System.out.print(arr2[i]+" "); 49 } 50 //对数组arr2进行直接选择排序 51 /*for(int i=0;i<arr2.length-1;i++){//比较的次数 52 for(int j=i;j<arr2.length;j++){//每趟都是从第i个元素一直比到最后一个 53 if(arr2[i]>arr2[j]){//每趟的第一个元素大于后边的元素,则交换 54 int temp=0; 55 temp=arr2[j]; 56 arr2[j]=arr2[i]; 57 arr2[i]=temp; 58 } 59 } 60 } 61 */ 62 //对直接选择排序的优化,可以当每趟的第一个数大于后边的数后,记住后边数的角标 63 //用这个小些的数再去和后边的元素比,直到最后找出最小的那个数,跟第一个数交换 64 //这样做每趟就只交换一次,提高了效率, 65 //优化后如下: 66 for(int i=0;i<arr2.length-1;i++){//比较的次数 67 68 int t=i;//定义每趟第i个元素为最小元素 69 70 for(int j=i;j<arr2.length;j++){//每趟都是从第i个元素一直比到最后一个 71 if(arr2[t]>arr2[j]){//但是若第i个元素大于后边的元素,则交换下角标 72 t=j;//然后由小的这个元素继续跟后边比较 73 } 74 } 75 if(t!=i){//如果角标变了,则交换 76 int temp=arr2[t];//最小的数的角标永远是赋值给t,arr2[t]是最小的数 77 arr2[t]=arr2[i]; 78 arr2[i]=temp; 79 } 80 } 81 82 System.out.println(" 直接选择排序后遍历arr2:"); 83 for(int i=0;i<arr2.length;i++){ 84 System.out.print(arr2[i]+" "); 85 } 86 87 88 89 } 90 }
运行结果: