算法
木兮vtalk
分享、精进、禅定。
展开
-
排序算法分析总结
算法 时间复杂度O 插入排序 O(n²) 归并排序 O(nlgn) 堆排序 O(nlgn) 快速排序 O(n²) 计数排序 O(n) 基数排序 O(n) 桶排序 O(n²)原创 2017-03-11 16:53:24 · 376 阅读 · 0 评论 -
基数排序
基数排序思想逻辑基数排序思想比较简单,例如有这么一个数组A[14,59,62,88,16]。 第一次,比较个位数,得到数组A1[62,14,16,88,59] 第二次,比较十位数,得到数组A2[14,16,59,62,88]。 … 具体是怎么实现的呢? 分配10个桶,桶编号为0-9,以个位数数字为桶编号依次入桶,变成下边这样 | 0 | 0 | 62 | 0 | 14 |原创 2017-03-21 00:02:56 · 350 阅读 · 0 评论 -
插入排序
插入排序动态逻辑图动态图解插入排序 插入排序代码template <typename T>void InsertSort(T array[],int length) { if (array == nullptr || length < 0) return; for(auto i = 1; i < length; i++) { auto preIn原创 2017-03-11 17:24:03 · 324 阅读 · 0 评论 -
希尔排序
希尔排序思想逻辑 希尔排序代码void InsertShellSort(int32_t numList[], int32_t len, int32_t dk) { for (auto i = dk; i < len; i++) { auto preIndex = i - dk; if (numList[i] < numList[preIndex]) {原创 2017-03-13 00:05:24 · 292 阅读 · 0 评论 -
选择排序
选择排序代码#include <iostream>using namespace std;void SelectSort(int32_t numList[], int32_t len) { for (auto i = 0; i < len; i++) { auto min = i; //标记最新数的下标 for (auto j = i + 1; j < le原创 2017-03-14 23:18:24 · 320 阅读 · 0 评论 -
堆排序
参考文章:堆排序原理及算法实现(最大堆)堆排序代码#include <iostream>using namespace std;void HeapAdjust(int32_t numList[], int32_t len, int32_t index){ auto i = index; auto j = i * 2 + 1; //得到i的左孩子 auto tmp = num原创 2017-03-14 00:24:26 · 281 阅读 · 0 评论 -
冒泡排序
冒泡排序代码#include <iostream>using namespace std;void BubbleSort(int32_t numList[], int32_t len) { for (auto i = 0; i < len - 1; i++) { //只需遍历len-1个元素 auto isChanged = false; for (auto原创 2017-03-14 22:55:08 · 309 阅读 · 0 评论 -
快速排序
快速排序思想逻辑在数据集之中,选择一个元素作为”基准”(pivot)所有小于”基准”的元素,都移到”基准”的左边;所有大于”基准”的元素,都移到”基准”的右边对”基准”左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止 快速排序代码#include<iostream>using namespace std;void Quicksort(int32_t numLi原创 2017-03-12 22:13:43 · 367 阅读 · 0 评论 -
归并算法
归并算法代码#include <iostream>using namespace std;void Merger(int32_t numList[], int32_t first, int32_t mid, int32_t last) { int32_t tmpList[13]; auto indexA = first; auto indexB = mid + 1;原创 2017-03-16 23:29:27 · 569 阅读 · 0 评论