日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

四种排序方法用java实现

發布時間:2023/12/31 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 四种排序方法用java实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  用三種方法實現幾個數的排序:冒泡排序,選擇排序,調用Java里的庫函數

1、?冒泡排序:顧名思義,就是將小的數一步一步往上冒,大的數一個個往下沉,下面是自己寫的對冒泡排序的理解,字丑將就看一下吧。

?

2、選擇排序:以從小到大為例,定義一個變量min_inter,用于記錄最小值的下標,找到最小的數放在第0位,第二小放在第1位,后面依次。

3、直接調用:Arrays.sort(num3);需要導入import java.util.Arrays;

4、插入排序:思路:每一步將一個待排序的記錄,按其排序碼大小插入到前面已排序的序列的合適位置,直到全部排序好,其耗時與冒泡排序差不多。

?

5、希爾排序:

?

?

下面是代碼:

1 package SortingWay; 2 3 import java.util.Arrays; 4 5 /** 6 *排序法,冒泡,選擇 7 *從小到大 8 *@author:Archer-LCY 9 *@date:2018年1月16日下午12:07:09 10 */ 11 public class InsertSort{ 12 public static void main(String[] args) { 13 final int N=50000;//常量 14 int [] num1=new int[N]; 15 int [] num2=new int[N]; 16 int [] num3=new int[N]; 17 int [] num4=new int[N]; 18 for(int i=0;i<num1.length;i++) { 19 num1[i]=(int)(Math.random()*N*10);//隨機生成N個數,為比較時間效率,N在這先取50000 20 num2[i]=num1[i]; 21 num3[i]=num1[i]; 22 num4[i]=num4[i]; 23 } 24 long star_time=System.currentTimeMillis();//計算開始時間 25 //方法一:冒泡 26 for(int i=0;i<num1.length;i++) {//冒泡排序 27 for(int j=0;j<num1.length-i-1;j++) { 28 if(num1[j]>num1[j+1]) { 29 int temp=num1[j];//在java中可以臨時定義一個變量,若前面一個數比后面大兩個數交換位置 30 num1[j]=num1[j+1]; 31 num1[j+1]=temp; 32 } 33 } 34 } 35 long end_time=System.currentTimeMillis(); 36 System.out.println("冒泡排序耗時:"+(end_time-star_time)+"毫秒");//計算結束時間,注意end_time-star_time一定要加(),否則有錯 37 38 //方法二:選擇 39 long star_time2=System.currentTimeMillis(); 40 for(int i=0;i<num1.length-1;i++) {//選擇排序 41 int min_inter=i;//記錄該組比較中最小數的下標 42 for(int j=i+1;j<num1.length;j++) { 43 if(num1[i]>num1[j]) { 44 min_inter=j; 45 } 46 } 47 //找到最小的數后放入第0個,第二小放在第1個,后面依次 48 int temp=num2[i]; 49 num2[i]=num2[min_inter]; 50 num2[min_inter]=num2[i]; 51 } 52 long end_time2=System.currentTimeMillis(); 53 System.out.println("選擇排序耗時:"+(end_time2-star_time2)+"毫秒"); 54 //方法三:調用java庫里的函數,也是速度最快的 55 long star_time3=System.currentTimeMillis(); 56 Arrays.sort(num3);//一句解決,需要導入import java.util.Arrays; 57 long end_time3=System.currentTimeMillis(); 58 System.out.println("Arrays.sort()耗時:"+(end_time3-star_time3)+"毫秒"); 59 60 //方法四:插入排序 61 long star_time4=System.currentTimeMillis(); 62 for(int i=0;i<num4.length;i++) { 63 int temp=num4[i]; 64 int j=i-1; 65 for(;j>=0&&temp<num4[j];j--) {//將大于temp的數后移 66 num4[j+1]=num4[j]; 67 } 68 num4[j+1]=temp; 69 } 70 long end_time4=System.currentTimeMillis(); 71 // for(int i=0;i<num.length;i++) { 72 // System.out.println(num4[i]); 73 // } 74 System.out.println("插入排序耗時:"+(end_time-star_time)+"毫秒"); 75 76 // //輸出,為計算比較三種排序的時間效率,先不打印 77 // for(int i=0;i<num3.length;i++) { 78 // if(i%10==0) 79 // System.out.println(); 80 // else 81 // System.out.print("\t"); 82 // System.out.print(num3[i]); 83 // } 84 85 86 } 87 }

?

下面是這三種排序算法所耗時間:

?

從運行結果上來看,冒泡排序所耗時間最長,其次是選擇排序,冒泡排序和選擇排序相比較,冒泡排序時間更長主要是因為冒泡排序交換次數更多,所耗時間自然就更長了。

?

轉載于:https://www.cnblogs.com/archer-lcy/p/8304902.html

總結

以上是生活随笔為你收集整理的四种排序方法用java实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。