本文簡單總結一下三大排序演算法,如有不足,請多多提意見。。。。。。
簡述:從小到大排序,每次比較兩個元素,看他們的順序有沒有錯,如果錯了就換過來。
a:比較abc....元素,如果第乙個比第二個大,則將兩個元素交換位置 bac...,再依次將a和c進行比較。
b:對每一對相鄰的元素做同樣的工作,從第一對到最後一對。這一次執行完,最後乙個元素是最大的元素。
c:重複以上a、b、c步,直到每個元素都不需要交換位置為止
在所有資料都是正序的時候,氣泡排序最快(都排好序了,目的已達到)。
當所有資料都排反序的時候最慢。
簡述:第一遍迴圈找到最小的元素放到第一位,第二次迴圈找到乙個第二小元素,放到第二位,以此完成排序。在每次迴圈中,先把第乙個元素標記為最小元素,然後將它與其後面的元素比較,發現比它小的,就將其標記為本次迴圈的最小元素。o(n
2),因
此,這個
排序演算法
適用於小
資料集。
a:先從未排序序列中找到最小(大)元素放到起始位置
b:再從剩餘未排序序列中繼續尋找最小(大)元素放到已排序末位
c:重複以上a、b兩步,直到排序完成
無論什麼資料進入,時間複雜度都是,時間複雜度都是o(n²),因此,這個排序適用於小資料集。
簡述:通過構建有序序列,對與未排序序列,從後向前掃瞄,逐個比較之後,插入到相應的位置上。o(n
2),因
此,這個
排序演算法
適用於小
資料集。
a:將第一待排序序列的第乙個元素看成有序序列,將第二個元素到最後乙個元素當成未排序序列
b:從頭到尾掃瞄未排序序列,將其插到已排序序列的的適當位置(如果兩個元素相等,則插入到已排序序列元素的後面)。
優點1:就是第二層迴圈在找到合適的插入位置之後可以提前終止,同時直接使用賦值操作,不像c++中使用swap來交換位置。:
優點2:當陣列為近乎有效的陣列時,插入排序的效率與nlogn級別的排序演算法相差無幾。
優點3:而當陣列是完全有序的陣列時,插入排序演算法的效能可以達到o(n),因為第二層迴圈可以直接終止,而只進行第一層迴圈。
排序演算法 冒泡 選擇 插入排序
外層迴圈控制大排序次數,內層迴圈控制每次大排序的排序次數 一次大排序就可以把最小的資料放在最前面。1 對陣列中的各資料,依次比較相鄰的兩個元素的大小 2 如果前面的資料大於後面的資料,就交換著兩個資料。經過第一 排序後,便可把最小的資料排好。3 然後再用同樣的方法吧剩下的資料逐個比較,最後得到從小到...
《演算法》選擇排序 插入排序 氣泡排序
選擇排序,演算法 p156 package algorithm public class selection p156 for int i 0 i n i public static void main string args test.sort a 思路 將第乙個元素與剩餘所有元素相比,如果有比第...
排序演算法 氣泡排序 選擇排序 插入排序
氣泡排序演算法 氣泡排序是最簡單的排序演算法之一。此演算法具有二次方程增長階,因此僅適合排序小列表。氣泡排序演算法是階o n 2 的演算法 package com.szy.structure.sort public class bubblesort system.out.println 排序前 fo...