常用演算法總結

2021-09-28 20:14:27 字數 2158 閱讀 2778

排序演算法穩定性的簡單形式化定義為:如果ai = aj,排序前ai在aj之前,排序後ai還在aj之前,則稱這種排序演算法是穩定的。

引用下網上的圖(

1、氣泡排序

/**

* 在要排序的一組數中,對當前還未排好序的範圍內的全部數,自上而下對相鄰的兩個數依次進行比較,讓較大的數往下沉,較小的往上冒。

* 即:每當兩相鄰的數比較後發現他們的排序與排序要求相反時,就將他們互換。

** @param arr

*/public void bubblesort(int arr)

for (int i = 0; i < arr.length; i++)

system.out.println("排序流程: " + json.tojsonstring(arr));

}system.out.println("*****: " + json.tojsonstring(arr));

if (!flag) break;}}

測試結果:

2、快速排序

該方法的基本思想是:

1.先從數列中取出乙個數作為基準數。

2.分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。

3.再對左右區間重複第二步,直到各區間只有乙個數。

雖然快速排序稱為分治法,但分治法這三個字顯然無法很好的概括快速排序的全部步驟。因此我的對快速排序作了進一步的說明:挖坑填數+分治法(可參考:

public void quicksort(int arr, int low, int high) 

}private int getindex(int arr, int low, int high)

arr[low] = arr[high];

當隊首元素小於等於tmp時,向後挪動low下標

while (low < high && arr[low] <= temp)

arr[high] = arr[low];

}// 跳出迴圈時low和high相等,此時的low或high就是tmp的正確索引位置;將tmp賦值給arr[low]

3、選擇排序

/**

* 選擇排序每次比較的是陣列中特定索引的值與全陣列中每個值的大小比較,每次都選出乙個最小(最大)值,如果當前索引的值大於之後索引的值,則兩者進行交換

** @param arr

*/public void selectsort(int arr)

for (int i = 0; i < arr.length; i++)

}int temp = arr[i];

arr[i] = arr[minindex];

arr[minindex] = temp;

system.out.println("排序流程: " + json.tojsonstring(arr));}}

排序測試:

5、插入排序

插入排序是一種最簡單直觀的排序演算法,它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。

插入排序和氣泡排序一樣,也有一種優化演算法,叫做拆半插入

/**

* 插入排序是一種最簡單直觀的排序演算法,它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。

* 插入排序和氣泡排序一樣,也有一種優化演算法,叫做拆半插入

** @param sourcearray

*/public int insertsort(int sourcearray)

// 存在比其小的數,插入

if (j != i)

}return arr;

}

常用演算法總結

通過區域性盡可能達到最優 貪婪的名字由來 從而實現整體的最優,貪婪演算法不一定總是正確的,因為每個區域性最優並不代表整體最優,但是在某些時候,它是正確.例如 為了找出找出17美元61美分 用最少的紙幣 肯定是按照最大面額盡可能多得先找,然後依次,所以先找乙個10美元的,在找乙個5美元的,再找2個1美...

常用演算法總結

常用演算法總結 前言與準備工作 動態規劃演算法 貪心演算法 分治演算法 回溯法 分支限界法。此部分內容可以參考部落格 五大常用演算法 排序演算法 我的部落格已經做出了總結,看 資料結構中常用的排序演算法 二叉樹相關演算法 鍊錶相關演算法 雜湊表相關演算法 學習思路 先了解基本的概念,然後找到相關的例...

常用演算法總結

常用演算法總結 前言與準備工作 動態規劃演算法 貪心演算法 分治演算法 回溯法 分支限界法。此部分內容可以參考部落格 五大常用演算法 排序演算法 我的部落格已經做出了總結,看 資料結構中常用的排序演算法 二叉樹相關演算法 鍊錶相關演算法 雜湊表相關演算法 學習思路 先了解基本的概念,然後找到相關的例...