時間複雜度o(n^2),原地,穩定.
void
bubble_sort
(vector<
int>
& nums)}if
(!flag)
break
;//如果沒有交換說明已經有序,跳出迴圈
}return
;}
時間複雜度o(n^2),原地,穩定.
void
insert_sort
(vector<
int>
& nums)
nums[i+1]
=value;
}return
;}
時間複雜度o(n^2),原地,但不穩定.
void
select_sort
(vector<
int>
& nums)
if(min_pos!=i)
swap
(nums[i]
,nums[min_pos]);
//與當前位置交換
}return
;}
時間複雜度o(nlogn),merge函式需要輔助陣列來重新形成新的有序陣列,不是原地排序演算法,但是是穩定排序演算法.
void
merge_sort
(vector<
int>
& nums,
int left,
int right)
void
merge
(vector<
int>
& nums,
int left,
int mid,
int right)
for(
int i=left;i<=right;i++
)//將有序陣列重新複製到原陣列
nums[i]
=tmp[i-left]
;}
時間複雜度o(nlogn),最壞o(n^2),是原地排序演算法,但不是穩定排序演算法.
void
quick_sort
(vector<
int>
& nums,
int left,
int right)
intpartition
(vector<
int>
& nums,
int left,
int right)
//以nums[right]作為分割槽點pivot
}swap
(nums[i]
,nums[right]);
return i;
//返回pivot所在的下標
}
C 實現常見排序演算法
本程式參考了網上各位大牛和資料結構中的程式,vs2005執行通過,如有問題,請各位大牛指正。實現的排序有 直接插入排序 折半插入排序 希爾排序 氣泡排序 快速排序 選擇排序 堆排序等等 include using namespace std const int len 100 class csort...
C 實現常見排序演算法
本程式參考了網上各位大牛和資料結構中的程式,vs2005執行通過,如有問題,請各位大牛指正。實現的排序有 直接插入排序 折半插入排序 希爾排序 氣泡排序 快速排序 選擇排序 堆排序等等 include using namespace std const intlen 100 class csort ...
常見排序演算法總結 C
以下排序演算法的排序結果若無特殊說明均為公升序,主要講述演算法的簡單原理,時間複雜度,空間複雜度和穩定性。其中 時間複雜度簡單來說就是演算法中基本操作重複執行的次數 空間複雜度並不是計算實際占用的空間,而是計算整個演算法的輔助空間 穩定性通俗地講就是能保證排序中相等的數其在序列的前後位置順序和排序後...