LeetCode題解 912 排序陣列

2021-10-05 11:47:55 字數 3760 閱讀 7215

瞧一瞧~給你乙個整數陣列 nums,請你將該陣列公升序排列。

示例 1:

輸入:nums = [5,2,3,1]

輸出:[1,2,3,5]

示例 2:

輸:nums = [5,1,1,2,0,0]

輸出:[0,0,1,1,2,5]

解法導航

描述:就像氣泡在水中上浮一樣,兩個數比較大小,較大的數下沉,較小的數冒起來。

過程:

平均時間複雜度: o(n2)

**:

var

sortarray

=function

(nums)

for(

let i =

0;i < nums.length; i++)}

}return nums

};

優化:思路平均時間複雜度:o(n2)**:

var

selectsort

=function

(nums)}if

(min !== i)

}return nums

}**

leetcode結果:

前言:

資料序列1:13-17-20-42-28利用插入排序,13-17-20-28-42.number of swap:1;

資料序列2:13-17-20-42-14利用插入排序,13-14-17-20-42.number of swap:3;

如果資料序列基本有序,使用插入排序會更加高效。

基本思想:

過程:

};leetcode結果:很遺憾經常超時。。。

基本思想:

**:

function

sortarray

(nums)

while

(h >=1)

} h =

(h -1)

/3;}

return nums

}function

swap

(array, i, j)

leetcode結果:

基本思想:

先實現第一點,將兩個已經排序的陣列合併合併已經排序的陣列-題解傳送門

var

merge

=function(a

, m,

b, n)

else

if(b === n)

elseif(

a[a]

<

b[b]

)else}}

;

之後就講乙個陣列拆分為2、4、6,直至每個陣列的元素個數為1,再進行兩兩合併

過程:

平均時間複雜度:o(nlogn)

**:

// 融合兩個有序陣列,這裡實際上是將陣列 arr 分為兩個陣列

function

mergearray

(arr, first, mid, last, temp)

else

}while

(i<=m)

while

(j<=n)

for(

let l=

0; l

)return arr;

}// 遞迴實現歸併排序

function

mergesort

(arr, first, last, temp)

return arr;

}// example

let arr =[10

,3,1

,5,11

,2,0

,6,3

];let temp =

newarray()

;let sortedarr =

mergesort

(arr,

0,arr.length-

1, temp)

;alert

(sortedarr)

;

基本思想:(分治)**:

var

sortarray

=function

(arr)

return

sortarray

(left)

.concat

([pivot]

,sortarray

(right))}

;

參考阮一峰大佬的版本

var

quicksort

=function

(arr)

var mid = arr.length>>

1var pivot = arr.

splice

(mid,1)

[0];

var left =

;var right =

;for

(var i =

0; i < arr.length; i++

)else

}return

quicksort

(left)

.concat

([pivot]

,quicksort

(right));

};

leetcode結果:

leetcode 912 排序陣列

給定乙個整數陣列 nums,將該陣列公升序排列。示例 1 輸入 5,2,3,1 輸出 1,2,3,5 示例 2 輸入 5,1,1,2,0,0 輸出 0,0,1,1,2,5 1 a.length 10000 50000 a i 50000實際上python自帶的sort函式是最好的,用了timesor...

leetcode 912 排序陣列

這是乙個排序題,都是老生常談的東西了,之前用的排序演算法都是通過比較大小進行排序,貼一下不用比較大小的計數排序的 計數排序的思想是 對於陣列中乙個需要排序的數字x來說,算出陣列中小於等於它的數字個數便可得出該數在有序陣列中的位置。該演算法只適用於整數陣列,時間複雜度為o n k o n k o n ...

LeetCode 912 排序陣列

排序陣列 給你乙個整數陣列 nums,請你將該陣列公升序排列。class solution for int i 0 i nums.length i 如果沒有資料交換,說明已經完全有序,提前退出迴圈if flag return nums class solution 記錄最小值的索引 int min ...