数组的排序算法

今天好晚了,明天一定补上今天这一课!!困~~

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 }

运行结果:

原文地址:https://www.cnblogs.com/yunqing/p/4753434.html