o(n^2) 的排序演算法。效能那麼差,為什麼還要學習?
首先,它是基礎,千里之行,始於足下。它編碼簡單,容易實現,是一些簡單情景的首選,它能給我們的問題乙個暴力的解法,這樣的解法也許不是最優的,但是它能給我們想出其他的優化演算法一些啟發,思路。
一、選擇排序
選擇排序是在給定的資料集合中,找出最小的值放在前面,依次類推,直到所有的元素都排序完成。
**實現:
1public
static
void selectionsorted(int
arr2
3int n =arr.length;
4for (int i = 0; i < n; i++)
11sortedhandler.swap(arr, minindex, i);12}
13}14 }
二、插入排序
基本操作的插入排序 (其實這樣效能是低於選擇排序的)
publicstatic
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)級別的演算法。
publicstatic
void insertsorted(int
arr)
arr[j] =tmp;
}}
三、 氣泡排序
publicvoid 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...