您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Java如何實現常用排序,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
1.選擇排序
選擇排序的基本思想是遍歷數組的過程中,以i代表當前需要排序的序號,則需要在剩余的[i…n-1]中找出其中的最小值,然后將找到的最小值與i指向的值進行交換。因為每一趟確定元素的過程中都會有一個選擇最大值的子流程,所以人們形象地稱之為選擇排序。
舉個實例來看看:
由例子可以看出,選擇排序隨著排序的進行(i逐漸增大),比較的次數會越來越少,但是不論數組初始是否有序,選擇排序都會從i至數組末尾進行一次選擇比較,所以給定長度的數組,選擇排序的比較次數是固定的:1+2+3+….+n=n*(n+1)/2,而交換的次數則跟初始數組的順序有關,如果初始數組順序為隨機,則在最壞情況下,數組元素將會交換n次,最好的情況下則可能0次(數組本身即為有序)。
由此可以推出,選擇排序的時間復雜度和空間復雜度分別為O(n2)和O(1)(選擇排序只需要一個額外空間用于數組元素交換)。
實現代碼:
2.插入排序
插入排序的基本思想是在遍歷數組的過程中,假設在序號i之前的元素即[0..i-1]都已經排好序,本趟需要找到i對應的元素x的正確位置k,并且在尋找這個位置k的過程中逐個將比較過的元素往后移一位,為元素x“騰位置”,最后將k對應的元素值賦為x,插入排序也是根據排序的特性來命名的。
以下是一個實例,紅色標記的數字為插入的數字,被劃掉的數字是未參與此次排序的元素,紅色標記的數字與被劃掉數字之間的元素為逐個向后移動的元素,比如第二趟參與排序的元素為[11,31,12],需要插入的元素為12,但是12當前并沒有處于正確的位置,于是我們需要依次與前面的元素31、11做比較,一邊比較一邊移動比較過的元素,直到找到第一個比12小的元素11時停止比較,此時31對應的索引1則是12需要插入的位置。
關于“Java如何實現常用排序”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。