O n 2 級別的排序演算法

2022-06-28 16:48:11 字數 1047 閱讀 3312

o(n^2) 的排序演算法。效能那麼差,為什麼還要學習?

首先,它是基礎,千里之行,始於足下。它編碼簡單,容易實現,是一些簡單情景的首選,它能給我們的問題乙個暴力的解法,這樣的解法也許不是最優的,但是它能給我們想出其他的優化演算法一些啟發,思路。

一、選擇排序

選擇排序是在給定的資料集合中,找出最小的值放在前面,依次類推,直到所有的元素都排序完成。

**實現:

1

public

static

void selectionsorted(int

arr2

3int n =arr.length;

4for (int i = 0; i < n; i++)

11sortedhandler.swap(arr, minindex, i);12}

13}14 }

二、插入排序

基本操作的插入排序 (其實這樣效能是低於選擇排序的)

public

static

void insertsorted(int

arr)

//第二層迴圈的第二種寫法,

//如果 arr[j] < arr[j-1] 的話,退出本次的內層迴圈,

//從這裡也可以看出插入排序的效能其實是由於選擇排序的,儘管它們的時間複雜度都是 o(n)

//for (int j = i; j > 0 && arr[j] < arr[j - 1]; j--)

} }

改進版本的插入排序(效能高於選擇排序)

對於近乎有序的陣列,它的表現可能更高於o(logn)級別的演算法。

public

static

void insertsorted(int

arr)

arr[j] =tmp;

}}

三、 氣泡排序

public

void bubblesorted (int

arr ) }}

}

四個O n 2 級別的排序效能測試

測試用例 ifndef optional 02 shell sort sorttesthelper h define optional 02 shell sort sorttesthelper h include include include include include using names...

老生常談 排序演算法溫習一O n 2 級別

排序演算法是每乙個程式設計者 演算法學習者高階路上的必經之路,是演算法殿堂的入門和基石存在。對於找工作來說,排序也是被面試詢問比較頻繁的問題。其他的各種演算法題中,也會經常用到排序的預處理。話不多說開始正題。選擇排序,以公升序為例。對陣列做遍歷處理 索引i 每一輪遍歷過程中,向後和每乙個元素進行比較...

演算法之排序 插入排序O n 2

目錄 1.走讀插入排序 演算法複雜度o n 2 空間複雜度o 1 2.插入排序特性 3.以下兩段 4.優缺點比較 排序之後的前n個元素是有序的 一 int sort insert int a,int size a j temp j i printf temp d,moved d n temp,n p...