zoukankan      html  css  js  c++  java
  • 数组的排序算法

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

    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 }

    运行结果:

  • 相关阅读:
    Android_NDK问题:APP_BUILD_SCRIPT points to an unknown file: <project_path>/jni/Android.mk
    Android开发问题集锦-Button初始为disable状态时自定义的selector不生效问题
    一步步学习Python-django开发-添加后台管理
    一步步学习Python-django开发-建立django数据库
    一步步学习Python-django开发-Mac下搭建Python-Django环境
    JAVA小知识点-Finally和Return的执行关系
    Android自定义组合控件内子控件无法显示问题
    《将博客搬至CSDN》
    idea自动生成try/catch代码块的快捷键
    转:Apache common包 CollectionUtils 使用详解
  • 原文地址:https://www.cnblogs.com/yunqing/p/4753434.html
Copyright © 2011-2022 走看看