java实现几种常用的排序算法

我与影子孤独终老i 提交于 2019-12-05 15:37:45
  1 import java.util.Arrays;
  2 import java.util.Random;
  3 
  4 /**
  5  * Created by Administrator on 2019/11/25.
  6  */
  7 public class Application {
  8     public static void main(String[] args) {
  9         int[] array=new int[8];
 10         Sort sort=new Sort();
 11         fillArray(array);
 12         System.out.println("快速排序前:"+ Arrays.toString(array));
 13         sort.quickSort(array,0,array.length-1);
 14         System.out.println("排序后:"+ Arrays.toString(array));
 15         System.out.println("---------------------------------------");
 16 
 17         fillArray(array);
 18         System.out.println("冒泡排序前:"+ Arrays.toString(array));
 19         sort.bubbleSort(array);
 20         System.out.println("排序后:"+ Arrays.toString(array));
 21         System.out.println("---------------------------------------");
 22 
 23         fillArray(array);
 24         System.out.println("插入排序前:"+ Arrays.toString(array));
 25         sort.insertSort(array);
 26         System.out.println("排序后:"+ Arrays.toString(array));
 27         System.out.println("---------------------------------------");
 28 
 29 
 30     }
 31     public static void fillArray(int[] array){
 32         Random random=new Random();
 33         for(int i=0;i<array.length;i++){
 34             array[i]=random.nextInt(50);
 35         }
 36     }
 37     public static class Sort{
 38         //冒泡排序
 39         private void bubbleSort(int[] nums){
 40             int temp;
 41             for(int i=1;i<nums.length;i++){
 42                 for(int j=0;j<nums.length-i;j++){
 43                     if(nums[j]>nums[j+1]){
 44                         temp=nums[j];
 45                         nums[j]=nums[j+1];
 46                         nums[j+1]=temp;
 47                     }
 48                 }
 49             }
 50         }
 51         //选择排序
 52         private void selectSort(int[] nums) {
 53             int index;
 54             int temp;
 55             for (int i = 0; i < nums.length - 1; i++) {
 56                 index = i;
 57                 for (int j = i + 1; j < nums.length; j++) {
 58                     if (nums[j] < nums[index]) {
 59                         index = j;
 60                     }
 61                 }
 62                 if (index != i) {
 63                     temp = nums[i];
 64                     nums[i] = nums[index];
 65                     nums[index] = temp;
 66                 }
 67             }
 68         }
 69         //插入排序
 70         private void insertSort(int[] nums){
 71             int i,j,k;
 72             for(i=1;i<nums.length;i++){
 73                 k=nums[i];
 74                 j=i-1;
 75                 while(j>=0&&nums[j]>k){
 76                     nums[j+1]=nums[j];
 77                     j--;
 78                 }
 79                 nums[j+1]=k;
 80             }
 81         }
 82         //快速排序
 83         private void quickSort(int[] array,int low,int high){
 84 
 85             int i,j,pivot;
 86             pivot=array[low];
 87             i=low;
 88             j=high;
 89             while (i<j){
 90                 while(i<j&&array[j]>=pivot){
 91                     j--;
 92                 }
 93                 array[i]=array[j];
 94                 while(i<j&&array[i]<=pivot){
 95                     i++;
 96                 }
 97                 array[j]=array[i];
 98             }
 99             array[i]=pivot;
100             if(low<i){
101                 quickSort(array,low,i-1);
102             }
103             if(high>i){
104                 quickSort(array,i+1,high);
105             }
106 
107 
108         }
109     }
110 
111 }

今天手写复习一下常用的几种排序

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!