leetcode912. 排序陣列
tips:
class
solution
void
sort
(int
nums,
int lo,
int hi)
intpartition
(int
nums,
int lo,
int hi)
}// 末尾的基準值放置到指標 i 的位置,i 指標之後的數都比基準值大
swap
(nums, i, j)
;// 返回指標 i,作為基準點的位置
return i;
}void
swap
(int
nums,
int i,
int j)
}
通過迭代來完成根據基準的分割槽
class
solution
void
qsort
(int
nums,
int low,
int high)
nums[l]
= tmp;
qsort
(nums, low, l)
;qsort
(nums, l +
1, high);}
}}
class
solution
void
heapsort
(int
nums)
for(
int i = size -
1; i >=
1; i--)}
void
adjust
(int
nums,
int len,
int index)
}}
若帶有後續插入重排的操作則需要用下面的heapify方法(左右孩子先比較)
class
solution
return nums;
}private
void
bulidheap
(int
nums,
int size)
}private
void
heapify
(int
nums,
int k,
int i)
else}}
private
void
swap
(int
nums,
int i,
int j)
}
class
solution}}
return nums;
}private
void
swap
(int
nums,
int i,
int j)
}
選擇當前位置應該放入的對應大小元素(即設定當前位置元素為最小值,若未排序陣列中有比他小的,則交換)
class
solution}if
(min != i)
}return nums;
}private
void
swap
(int
nums,
int i,
int j)
}
不斷從無序陣列中取第乙個元素,而後不斷向前比較,若小於則交換,直到放至其適合位置
class
solution
else}}
return nums;
}}
mergesort負責分,merge負責並(生成當前陣列範圍的新陣列,雙指標一次比較插入)
class
solution
private
void
mergesort
(int
nums,
int l,
int r)
int mid = l +
((r - l)
>>1)
;mergesort
(nums, l, mid)
;mergesort
(nums, mid +
1, r)
;merge
(nums, l, mid, r);}
private
void
merge
(int
nums,
int left,
int mid,
int right)
else
}while
(l <= mid)
while
(m <= right)
for(
int num : tmp)
}}
常用排序演算法總結 選擇排序 java實現
選擇排序 selection sort 是一種簡單直觀的排序演算法。它的工作原理如下。首先在未排序序列中找到最小 大 元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小 大 元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。選擇排序的主要優點與資料移動有關。如果某...
常用排序演算法總結
總結些常見的排序演算法,方便以後可以重用。資料量不大,為了表達方便就直接使用了陣列。int data null data new int 1.氣泡排序 氣泡排序,從小到大排序 for int i 0 i data.length i 氣泡排序就是說,排序的過程像水裡往上冒的氣泡一樣,每個數字代表乙個氣...
常用排序演算法總結
常用排序演算法總結 選擇排序 對於長度為n的陣列,選擇排序需要大約n2 2詞比較和n次交換。插入排序 對於隨機排列的長度為n且主鍵不重複的陣列 1 平均情況下,需要 n2 4次比較以及 n2 4次交換。2 最壞情況下,需要 n2 2次比較以及 n2 2次交換 3 最好情況下,需要n 1次比較以及0次...