数组的排序方法介绍

JAVA中在运用数组进行排序功能时,一般有四种方法:快速排序法、冒泡排序法、选择排序法以及插入排序法。下面我来给大家介绍一下。

  1. 快速排序法
    快速排序的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

  2. 冒泡排序法
    冒泡排序的方法是:重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
    案例:给1-100范围内的10个不同的随机数进行排序

import java.util.Random;

public class Test {
    public static void main(String[] args) {
        Random rand = new Random();
        //生成10个不重的随机1-100的整数
      int[]array = new int[10];
        int size = 0;
        array[size++]=1+rand.nextInt(100);
        boolean no;
        for (int t;size<array.length; ){
            t=1+rand.nextInt(100);
            no = true;
            for (int j = 0; j <size ; j++) {
                if (array[j]==t){
                    no = false;
                    break;
                }
            }
              if (no){
                  array[size++]=t;
              }
        }
        System.out.println("排序前:");
     for(int i : array){
     System.out.print("\t"+i);
   }
       //冒泡排序
        //外层循环控制轮次
       for (int i = 0; i <array.length-1 ; i++) {
        //内存循环控制每一轮比较多少次,找左边大

                for (int j = 0,t; j <array.length-1-i ; j++) {
                   if (array[j] > array[j+1]) {
                        t = array[j];
                        array[j]=array[j+1];
                        array[j+1]=t;
                    }
                   }
               }
         System.out.println("\n排序后:");
         for (int t : array) {
         System.out.print("\t"+t);

            }
       }
}
  1. 选择排序法
    选择排序法的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。

案例如上

 //选择排序
        for (int i = 0,maxVallx,maxIx,t; i < array.length-1; i++) {
           maxVallx = 0;//假设最大值的下标为0,并通过内层循环进行调整
            maxIx = array.length-1-i;//最大下标在每一轮是固定的
            for (int j = 1; j <=maxIx; j++) {
                if (array[maxVallx] < array[j]) {
                    maxVallx = j;
                 }
               }
              //判断最大值是否出现在最大下标,若不是则值交换
            if (maxVallx!=maxIx){
                t= array[maxVallx];
                array[maxVallx ]=array[maxIx];
               array[maxIx] = t;
               }
            }
  1. 插入排序法
    插入排序法的基本思想是输入一个元素,检查数组列表中的每个元素,将其插入到一个已经排好序的数列中的适当位置,使数列依然有序,当最后一个元素放入合适位置时,该数组排序完毕。

案例如上

           //插入排序
        for (int i = 1,t,j;i <array.length;i++){
            if (array[i]>=array[i-1]){
                continue;
            }       
            t = array[i];  
            for (j = i-1; j>=0&&t<array[j] ; j--) {
                array[j+1] = array[j];
            }
            array[j+1] = t;
        }

猜你喜欢

转载自blog.csdn.net/ccsynl/article/details/106593556
今日推荐