氣泡排序
時間複雜度:o(n
2)
o(n^2)
o(n2
)
#include
#include
#include
using
namespace std;
void
bubblesort
(int arr,
int len)}}
}int
main
(void
) cout << endl;
bubblesort
(arr,20)
;for
(int i =
0; i <
20; i++
) cout << endl;
return0;
}
快速排序
時間複雜度:o(n
logn
)o(nlogn)
o(nlog
n)
#include
#include
#include
using
namespace std;
intpartition
(int arr,
int left,
int right)
int temp = arr[left]
;// 以第乙個元素值為比較基準
while
(left < right)
if(left < right)
arr[left++
]= arr[right]
;// 把找到的值賦值給左側,然後left位置右移一位
while
(left < right && arr[left]
<= temp)
// 從左側查詢比基準大的位置
if(left < right)
arr[right--
]= arr[left]
;// 把找到的值賦值給右側,然後right位置左移一位
} arr[left]
= temp;
return left;
}void
quicksort
(int arr,
int left,
int right)
int l =
partition
(arr, left, right)
;// 中間位置
quicksort
(arr, left, l -1)
;// 遞迴左側排序
quicksort
(arr, l +
1, right)
;// 遞迴右側排序
}int
main
(void
) cout << endl;
quicksort
(arr,0,
19);for
(int i =
0; i <
20; i++
) cout << endl;
return0;
}
應用:乙個整形陣列,把資料連線成乙個最小的數
bool
compare
(int a,
int b)
return
false;}
intmain
(void);
for(
int i =
0; i <
8; i++
) cout << endl;
quicksort
(arr,0,
7);sort
(arr, arr +
8, compare)
;for
(int i =
0; i <
8; i++
) cout << endl;
return0;
}
陣列索引排序
int
main()
; vector<
int>
idx(5)
;itoa
(idx.
begin()
, idx.
end(),
0);sort
(arr, arr +5,
[&](
int&i,
int&j));
return0;
}
堆排序
對於大頂堆:arr[i] >= arr[2i + 1] && arr[i] >= arr[2i + 2]
對於小頂堆:arr[i] <= arr[2i + 1] && arr[i] <= arr[2i + 2]
#include
#include
#include
#include
#include
using
namespace std;
void
heapify
(int
*arr,
int i,
int len)
if(right < len && arr[right]
> arr[largestindex])if
(largestindex != i)
}void
buildmaxheap
(int
*arr,
int length)
}/**
* @brief 大堆排序.
* @param arr 陣列(完全二差數).
* @param length 陣列長度.
*/void
heapsort
(int
*arr,
int length)
buildmaxheap
(arr, length)
;int i = length;
while
(i)}
intmain()
;heapsort
(arr,8)
;return0;
}
C 排序演算法的比較
首先通過圖表比較不同排序演算法的時間複雜度和穩定性。排序方法 平均時間 最壞情況 最好情況 輔助空間 穩定性 直接插入排序 o n2 o n2 o n o 1 是氣泡排序 o n2 o n2 o n o 1 是簡單選擇排序 o n2 o n2 o n2 o 1 是希爾排序 o nlog2n o n2...
排序演算法比較
本章中已經研究並仔細分析了多個內部排序方法。對於這些內部排序方法之間的比較,主要從以下幾個方面綜合考慮 時間複雜度 空間複雜度 演算法穩定性 演算法簡單性 待排序記錄數 n的大小 記錄本身的資訊量等。選擇n 個整數組成一些隨機排序,各種內部排序方法的實際時間如圖 7 10 所示。從時間複雜度看,所有...
排序演算法比較
排序方法 最好時間 平均時間 最壞時間 輔助儲存 穩定性備註 簡單選擇排序 o n2 o n2 o n2 o 1 不穩定n小時較好 直接插入排序 o n o n2 o n2 o 1 穩定大部分已有序時較好 氣泡排序 o n o n2 o n2 o 1 穩定n小時較好 希爾排序 o n o nlogn...