排序
外太空の神
这个作者很懒,什么都没留下…
展开
-
快速排序在最坏的情况下时间复杂度(Ω(nlgn)(算法导论第三版9.3-3))
快速排序在最坏的情况下时间复杂度Ω(nlgn)1⃣️在元素各异时或者少量相等(元素个数n>70)时间复杂度Ω(nlgn)void quick_sort_by_median(int *array,int start,int end){ if(start<end) { int median = select(array,start,end,(end - start + 1)/2 + (end - start + 1) % 2); int mid原创 2021-07-08 10:54:32 · 3652 阅读 · 0 评论 -
算法-排序-k排序(算法导论第三版第八章思考题8-5)
算法-排序-k排序算法导论第三版第八章思考题8-5利用最小堆完成k部分元素排序#include "k_sort_heap.h"int left_k_sort(int parent){ return (parent << 1) + 1;}int right_k_sort(int parent){ return (parent << 1) + 2;}void heapify_k_sort(int *array,int heap_size,int par原创 2021-07-05 22:31:29 · 1112 阅读 · 0 评论 -
算法导论水壶问题(第三版第八章思考题8-4)
算法导论水壶问题(第三版8-4)本算法只适用于解题,不通用。期望的时间复杂度O(nlgn)Kettle.h文件#ifndef C11LEARN_KETTLE_H#define C11LEARN_KETTLE_H#include <iostream>#include <vector>#include "../tools/random.h"using namespace std;class Kettle {public: string color;原创 2021-07-05 20:01:47 · 168 阅读 · 0 评论 -
算法-排序-桶排序
桶排序桶排序期望的运行时间是Θ(n)局限:输入数组要在[0,1)之间void bucket_sort(float *array,int length){ vector<vector<float>> bucket(length); for (int i = 0; i < length; ++i) { bucket[(int)(length*array[i])].push_back(array[i]); } for (int i原创 2021-07-04 18:53:12 · 96 阅读 · 0 评论 -
算法-排序-基数排序(对任意整数排序)
基数排序时间复杂度:O(d(n+k))d:元素的位数,k元素中每位的的最大取值范围非原址排序void radix_sort(int *array,int length,int digits){ vector<KeyValuePair> temp_array(length); for (int i = 0; i < length; ++i) { temp_array[i].value = array[i]; } for (int i =原创 2021-07-04 11:38:22 · 227 阅读 · 0 评论 -
算法-排序-计数排序(包含对非负数和整数的排序)
计数排序时间复杂度O(n)特点:对0到maximum中的数进行排序maximum要求,比数组中最大值大或者相等void counting_sort(int *input_array,int *out_array,int length,int maximum){ int* count_array = new int [maximum+1]; for (int i = 0; i < maximum + 1; ++i) { count_array[i] = 0;原创 2021-07-04 08:30:44 · 143 阅读 · 0 评论 -
对区间的模糊排序
对区间的模糊排序算法导论第三版第二部分7-6题Interval find_intersection(vector<Interval> &array,int start,int end){ int random = random_include_left_right(start,end); Interval key = array[end]; array[end] = array[random]; array[random] = key; ke原创 2021-07-03 20:37:36 · 99 阅读 · 0 评论 -
算法-排序-快速排序(包含多种快速排序)
快速排序特点:原址排序,最坏的时间复杂度O(n^2)平均时间复杂度O(nlgn)比归并排序系数常数项小void quick_sort(int *array,int start,int end);int partition(int *array,int start,int end);```cpp#include "quick_sort.h"void quick_sort(int *array,int start,int end){ if(start<end) {原创 2021-07-02 21:51:32 · 106 阅读 · 0 评论 -
d叉堆实现优先队列
d叉堆实现优先队列时间复杂度 dlog(d,n)#include <stdexcept>#include <iostream>class DForkHeapPriorityQueue {private: int capacity; int *array; int d; int heap_size;public: DForkHeapPriorityQueue(int capacity,int d); DForkHeapPrio原创 2021-07-02 15:08:31 · 143 阅读 · 0 评论 -
堆排序(包含最大堆和最小堆)
堆排序(包含最大堆和最小堆)堆排序 时间复杂度nlgn,原址排序。最小堆排序int parent(int i){ return i >> 1;}int left(int i){ return i << 1;}int right(int i){ return (i << 1) + 1;}void max_heapify(int *array,int heap_size,int parent_index){ int l原创 2021-07-01 14:32:44 · 160 阅读 · 0 评论 -
算法-排序-冒泡排序
冒泡排序特点:原址排序,比较排序时间复杂度O(n^2)void bubble_sort(int *arr,int start,int end){ for (int i = start; i < end; ++i) { for (int j = end; j >i ; j--) { if(arr[j-1]>arr[j]) { int temp = arr[j];原创 2021-06-19 21:50:46 · 68 阅读 · 0 评论 -
算法-排序-选择排序
选择排序特点:原址排序,比较排序,时间复杂度O(n^2)//// Created by 许加权 on 2021/6/19.//#include <iostream>void selection_sort(int *arr,int start,int end){ for (int i = start + 1; i < end+1; ++i) { for (int j = i; j < end+1; ++j) { if(a原创 2021-06-19 08:58:00 · 94 阅读 · 0 评论 -
算法-排序-归并排序
归并排序特点:非原址排序,比较排序,时间复杂度O(nlogn)//// Created by 许加权 on 2021/6/18.//#include <iostream>void merge_sort(int *arr,int start,int end){ if(start != end) { int middle = (start + end)/2; merge_sort(arr,start,middle); m原创 2021-06-18 22:44:24 · 93 阅读 · 0 评论 -
算法-排序-插入排序
插入排序//// Created by 许加权 on 2021/6/18.//#include <iostream>void insertion_sort(int *arr,int start,int end){ for (int i = start+1; i < end+1; ++i) { int key = arr[i]; int j = i-1; while (j>=0 && key<原创 2021-06-18 20:25:24 · 72 阅读 · 0 评论