1. 程式人生 > >java 實現幾種常見排序方法

java 實現幾種常見排序方法

日常操作中常見的排序方法有:氣泡排序、快速排序、選擇排序、插入排序、希爾排序,甚至還有基數排序、雞尾酒排序、桶排序、鴿巢排序、歸併排序等。

氣泡排序是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢“浮”到數列的頂端。

----------------------------------------------------------------------------------------------

/**   * 冒泡法排序 * 比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。 * 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數 * 針對所有的元素重複以上的步驟,除了最後一個 * 持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較  * 需要排序的整型陣列   */   public static void bubbleSort(int[] numbers) {    int temp; // 記錄臨時中間值    int size = numbers.length; 
// 陣列大小    for (int i = 0; i < size - 1; i++) {    for (int j = i + 1; j < size; j++) {    if (numbers[i] < numbers[j]) { // 交換兩數的位置    temp = numbers[i];    numbers[i] = numbers[j];    numbers[j] = temp;    }    }    }    } 快速排序使用分治法策略來把一個序列分為兩個子序列。
/**   * 快速排序
* 從數列中挑出一個元素,稱為“基準” * 重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的後面(相同的數可以到任一邊)。在這個分割之後  * 該基準是它的最後位置。這個稱為分割(partition)操作。 * 遞迴地把小於基準值元素的子數列和大於基準值元素的子數列排序 */   public static void quickSort(int[] numbers, int start, int end) {    if (start < end) {    int base = numbers[start]; // 選定的基準值(第一個數值作為基準值)    int temp; // 記錄臨時中間值    int i = start, j = end;    do {    while ((numbers[i] < base) && (i < end))   

相關推薦

Java實現常見排序方法

package test.sort;   import java.util.Random;   //Java實現的排序類  publicclass NumberSort {        //私有構造方法,禁止例項化  private NumberSort() {            super();   

Java實現常見排序方法(下) .

 插入排序的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃描,找到相應位置並插入。其具體步驟參見程式碼及註釋。 [java] view plaincopyprint? /**  * 插入排序<br/>  * <ul> 

java 實現常見排序方法

日常操作中常見的排序方法有:氣泡排序、快速排序、選擇排序、插入排序、希爾排序,甚至還有基數排序、雞尾酒排序、桶排序、鴿巢排序、歸併排序等。 氣泡排序是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列

【知了堂學習筆記】java 編寫常見排序算法

第一個 public 調用 ati print 所有 eth string quick 排序的分類: 一.交換排序 所謂交換,就是根據序列中兩個記錄鍵值的比較結果來對換這兩個記錄在序列中的位置,交換排序的特點是:將鍵值較大的記錄向序列的尾部移動,鍵值較小的記錄向序列的前部

常見排序方法

冒泡 function bubble($data){ $size = count($data); for($i=0;$i<$size;$i++){ for($j=$i+1;$j<$size;$j++){ if($data

java實現常用排序:選擇排序

一.選擇排序介紹 選擇排序,顧名思義就是用逐個選擇的方式來進行排序,逐個選擇出陣列中的最大(或最小)的元素,直到選擇至最後一個元素。此時陣列完成了排序。 二.選擇排序原理分析 三.選擇排序程式碼實現 /** * @Author {LearnAndGet} * @Time 2019年1月8日

java 實現8常見排序

// 插入排序 #include <iostream> using namespace std; void InsertSort(int s[], int size)

java常見排序演算法實現

在Java中得資料結構比較 | 資料機構 | 優點| 缺點 | |陣列 | 插入快,在直到下標得情況下可快速地存取| 查詢慢,刪除慢,大小固定 | |有序陣列 | 比無序得陣列查詢快|刪除和插入慢,大小固定 | |棧 | 提供後進先出方式的存取| 存取其他項很

常見排序演算法java實現

public class sort { public static void main(String[] args) { int[] a= {10,1,35,14,9,12,11}; int c=(int)Math.floor(Math.random()*7);

JAVA陣列中五常見排序方法

前言: 幾種常用的JAVA陣列排序方法的整合。 法一:Arrays.sort() Arrays.sort()排序方法在java中是最簡單且最常用的排序方法 int []arr1= {45,34,59,55}; Arrays.sort(arr1);//呼叫方法排序即可

常見陣列排序方法

---恢復內容開始--- 一、研究陣列排序的意義: 資料結構中,排序演算法各有用處,不同的排序方法有不同的時間複雜度與空間複雜度。為了能夠依據不同情況,選用不同的排序方法解決不同的問題。 二、常見的陣列排序方法: 以下研究,預設是對運算元組進行從小到大的排序。使用語言是Java。 1.選擇排序法

python經典排序方法實現

程式碼已封裝為SortMethod的class #*-* coding:utf-8 *-* ''' Author:7a6d4 calss for sorting ''' class SortMethod: ''' 插入排序的基本操作就是將一個

用php實現常見排序演算法

一、氣泡排序 氣泡排序理解起來是最簡單,但是時間複雜度(O(n^2))也是最大的之一,實現程式碼如下: function bubbleSort($arr) { $len = count(

php實現7常見排序

tar AI eap continue nds UNC reat pub HP class test{ public function main() { $data = $this->createData(); $th

Java常見的NPE問題

avi oar 返回 對象 [] 報錯 不能 alt public 1、Map下的NPE 直接上代碼: public class User { private Integer id; private String name;

使用CSS替代JS實現常見的特效

  本文介紹用CSS代替JS來實現我們頁面中所需要的幾種常見效果。包括導航高亮,下拉選單等。 1. 導航高亮      導航高亮是一種很常見的問題,包括當前頁面的導航在選單裡面高亮和hover時高亮。你可以用js控制,

ETL-關於緩慢變化維的常見解決方法

緩慢變化維: 維度表裡面的資料並非是始終不變的,總會隨著時間發生變化。 維度建模的資料倉庫中,有一個概念叫Slowly Changing Dimensions,中文一般翻譯成“緩慢變化維”,經常被簡寫為SCD。緩慢變化維的提出是因為在現實世界中,維度的屬性並不是靜態的,它會隨著時間的流失發生

資料結構(一):常見排序演算法比較

排序 0. 常見排序演算法效率比較 時間複雜度及穩定性比較 排序方法 平均方法 最優複雜度 最壞複雜度 輔助空間 穩定性 氣泡排序 O(

Java實現加密工具類

在我們的程式設計師之路上,肯定少不了加密的協助,比如最常見的MD5與sha這兩種加密,這次我給大家帶來的是不用任何操作,直接粘上就能用的加密工具類(懶惰程式設計師的福音),好了話不多說,直接如下: import java.io.UnsupportedEncodingExc

測試用例的常見設計方法

  測試用例常見的設計方法有:等價類劃分法、邊界值分析法、錯誤推測法、判定表法、正交實驗法。  一.等價類劃分法  顧名思義,等價類劃分,就是將測試的範圍劃分成幾個互不相交的子集,他們的並集是全集,從每個子集選出若干個有代表性的值作為測試用例。  例如,我們要測試一個使用者名稱是否合法,使用者名稱的定義為:8