演算法之排序演算法

2021-09-13 15:04:15 字數 2076 閱讀 8218

排序演算法小結

插入排序

其它排序

將陣列遍歷,第乙個數與第二個數比較,把較小的數拿出來,再與第三個數比較,把最小的數拿出來,迴圈一次,把最小的數拿出來了,第二次迴圈的次數會減少一次,找到第二小的數,最後排序完成。

//核心**

//快取元素

integer temp;

for (int i = 0; i < beforenum.length - 1; i++)

}

設定乙個初始值s,兩個指標i,j分別指向第乙個位置與最後乙個位置,j從後往前找比s小的數,i從前往後找比s大的數,找到之後,i,j數進行交換,繼續,直到ij相遇,將base與i進行交換。自此,左右的數分別比s小或者大,再分別對左右進行排序,可得。

程式實現:1.找到基準值,2.對基準值進行排序(遞迴呼叫)

//快速排序法 ----選定乙個初始值s,2個哨兵i(開始位置)j(結束位置)i從前往後遍歷,j從後往前遍歷(先)

//j找比s小的數,i找比s大的數,交換,如果ij相遇,s與i交換。此時,s左邊的數比s小,s右邊的數比s大

//對左邊與右邊的數分別再進行操作

public static int division(int list, int left, int right)

list[left] = basenum;

return left;

}//快速排序

public static int quicksort(int startnum, int left, int right)

return startnum;

}

選定乙個初始值,將初始值與後面所有數進行比較,找到最小值,交換,在除最小值的數裡面找最小值,放到第二位,以此類推。程式實現思路是遍歷陣列,找到下標最小值,進行資料交換。

for (int i = 0; i < list.length - 1; i++) 

}//資料交換

int temdata = list[tempindex];

list[tempindex] = list[i];

list[i] = temdata;

}

堆排序

堆排序需要用到二叉樹構建大根堆(父節點比左右孩子都要大),

從根結點3開始,不用交換,左結點2與5交換,交換後再將5與3交換,交換後再將3與4交換,請自行腦補。。。。 每次構建後會對二叉樹進行破壞,所以需要重新構建。

//堆排序

//調整堆方法

public static void heapadjust(int list, int parent, int length)

//最後將temp值賦給較大的子節點,以形成兩值交換

list[parent] = temp;

}//堆排序演算法

public static int heapsort(int list)

//最後輸出堆元素

for (int i = list.length - 1; i > 0; i--)

return list;

}

從無序數列中取出乙個數,再取出乙個數,對比插入到有序數列前面或者後面,每次取出乙個數,進行插入。

//無序序列

ps:由於自身實力的限制,後面幾種排序有的沒有寫例子,感覺不怎麼好理解,只能後面再來研究了。可以檢視我的參考部落格,感覺這個大哥寫的東西很好,推薦。另附上我的**位址(有很多不足還請指教)。

1.2.

3.

演算法之排序演算法

1.概述 排序演算法是計算機技術中最基本的演算法,許多複雜演算法都會用到排序。儘管各種排序演算法都已被封裝成庫函式供程式設計師使用,但了解排序演算法的思想和原理,對於編寫高質量的軟體,顯得非常重要。本文介紹了常見的排序演算法,從演算法思想,複雜度和使用場景等方面做了總結。2.幾個概念 1 排序穩定 ...

演算法之排序演算法

1.概述 排序演算法是計算機技術中最基本的演算法,許多複雜演算法都會用到排序。儘管各種排序演算法都已被封裝成庫函式供程式設計師使用,但了解排序演算法的思想和原理,對於編寫高質量的軟體,顯得非常重要。本文介紹了常見的排序演算法,從演算法思想,複雜度和使用場景等方面做了總結。2.幾個概念 1 排序穩定 ...

演算法之排序演算法

1.概述 排序演算法是計算機技術中最基本的演算法,許多複雜演算法都會用到排序。儘管各種排序演算法都已被封裝成庫函式供程式設計師使用,但了解排序演算法的思想和原理,對於編寫高質量的軟體,顯得非常重要。本文介紹了常見的排序演算法,從演算法思想,複雜度和使用場景等方面做了總結。2.幾個概念 1 排序穩定 ...