Java 常用演算法(冒泡 選擇 插入 快排)

2021-08-20 11:30:56 字數 1689 閱讀 7166

氣泡排序是所有排序演算法中最基本、最簡單的一種。思想就是交換排序,通過比較和交換相鄰的資料來達到排序的目的。

設陣列的長度為n: 

1、比較前後相鄰的二個資料,如果前面資料大於後面的資料,就將這二個資料交換。

2、這樣對陣列的第0個資料到n-1個資料進行一次遍歷後,最大的乙個資料就「沉」到陣列第n-1個位置。

3、n=n-1,如果n不為0就重複前面二步,否則排序完成。

按照這個定義很快就能寫出**:

public static void sort(int arr)}}

}選擇排序演算法在每一步中選取最小值來重新排序,通過選擇和交換來實現排序。

具體流程如下:

1、首先從原陣列中選擇最小的1個資料,將其置於第乙個位置。

2、然後從剩下的資料中再選擇其中最小的乙個資料,並將其置於原陣列的第二個位置。

3、不斷重複選擇和交換的過程,直至最後排序完成。

public static void sort(int arr)

}//交換

if(small != i)}}

直接插入排序是將未排序的資料插入至已排好序序列的合適位置。

具體流程如下:

1、首先比較陣列的前兩個資料,並排序;

2、比較第三個元素與前兩個排好序的資料,並將第三個元素放入適當的位置;

3、比較第四個元素與前三個排好序的資料,並將第四個元素放入適當的位置;

......

4、直至把最後乙個元素放入適當的位置。

public static void sort(int arr)else

}arr[j+1] = temp;}}

快速排序,顧名思義,是一種速度快,效率高的排序演算法。

快排原理:

在要排的數(比如陣列a)中選擇乙個中心值key(比如a[0]),通過一趟排序將陣列a分成兩部分,其中以key為中心,key右邊都比key大,key左邊的都key小,然後對這兩部分分別重複這個過程,直到整個有序。

整個快排的過程就簡化為了一趟排序的過程,然後遞迴呼叫就行了。

一趟排序的方法:

1、定義i=0,j=a.lenght-1,i為第乙個數的下標,j為最後乙個數下標

2、從陣列的最後乙個數aj從右往左找,找到第一小於key的數,記為aj;

3、從陣列的第乙個數ai 從左往右找,找到第乙個大於key的數,記為ai;

4、交換ai 和aj 

5、重複這個過程,直到 i=j

6、調整key的位置,把a[i] 和key交換

public static void sort(int arr,int low,int high)

//2. 存

int i = low;

int j = high;

//3. key

int key = arr[i];

//4. 完成一次比較

while(i < j)  

// 4.2 從左邊找到乙個大於key的數

while(i 交換

if(i} 跳轉key 的位置

int p = arr[i];

arr[i] = arr[low];

arr[low] = p;

//5. 對 key 左邊的資料快速排序

sort(arr,low,i-1);

//6. 對 key 右邊的資料快速排序

sort(arr,i+1,high);

}

java常用排序演算法 冒泡,選擇,插入

重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。時間複雜度 o n 為穩定演算法。public static void bubblesort int arr 每一次從待排序的資料元素中選出最小 ...

冒泡,快排,插入,希爾,選擇,歸併演算法

演算法,根據資料的樣子,進行做計算。爭取在固有資料的基礎上,達到計算次數 記憶體占用最少的運算方式。現將集中演算法歸納如下 演算法名稱 演算法概要 冒泡挨個拿陣列的元素和後面的做比較,發現大小不對,則交換位置,這樣導致按照座標向後運算,座標資料是一定有序的,相對後面最大或最小 快排拿乙個陣列,向前查...

排序演算法 插入 選擇 冒泡 快排 歸併

可以找一些帖子理解下幾類排序演算法或者聽下陳越姥姥在mooc上的資料結構 選擇類排序 交換類排序 歸併排序 基數排序 拓撲排序 從待排序的n個記錄中的第二個記錄開始,依次與前面的記錄比較並尋找插入的位置,每次外迴圈結束後,將當前的數插入到合適的位置。void sort insert int a,in...