
选择
选择算法
外太空の神
这个作者很懒,什么都没留下…
展开
-
带权中位数-算法导论第三版第九章思考题9-2
带权中位数-算法导论第三版第九章思考题9-2b时间复杂度O(nlgn)float find_median_with_weights_b(float *array,int length){ quick_sort<float>(array,0,length-1); float sum = 0; int index = 0; while (sum < 0.5) { sum += array[index]; index原创 2021-07-09 10:55:43 · 200 阅读 · 0 评论 -
有序序列中的i个最大数(算法导论思考题9-1)
有序序列中的i个最大数(算法导论思考题9-1)a时间复杂度O(nlgn+i)//总共时间复杂度O(nlgn+i)vector<int> i_largest_number_in_ordered_sequence_a(int *array,int length,int i){ vector<int>result; //时间复杂度O(nlgn) quick_sort_by_median_contains_equal_elements(array,0,len原创 2021-07-08 20:29:31 · 166 阅读 · 0 评论 -
找出有序数组X和Y中所有元素的中位数(X,Y分别含n个元素)(算法导论第三版9.3-8)
找出有序数组X和Y中所有元素的中位数(X,Y分别含n个元素)(算法导论第三版9.3-8)时间复杂度O(lgn)int find_median_two_ordered_arrays(int *array_a,int *array_b,int length){ int a_start = 0,a_end = length - 1,b_start = 0,b_end = length - 1; while (true) { int median_a = array_原创 2021-07-08 16:31:26 · 201 阅读 · 0 评论 -
确定S中最接近中位数的k个元素(算法导论第三版9.3-7)
确定S中最接近中位数的k个元素(算法导论第三版9.3-7题)时间复杂度O(n)vector<int> k_elements_closest_to_median(int *array,int start,int end,int k){ vector<int> result; int median = select(array,start,end,(end - start + 1)/2 + (end - start + 1) % 2); int *arra原创 2021-07-08 15:13:32 · 385 阅读 · 0 评论 -
找出第i个小元素(算法导论第三版9.2-4题)
找出第i个小元素(算法导论第三版9.2-4题)期望时间复杂度:Θ(n)最坏情况的时间复杂度Θ(n^2)int randomized_select_based_loop(int *array,int start,int end,int index){ while (true) { if(start == end) return array[start]; int middle = randomized_partition(arra原创 2021-07-07 10:11:40 · 152 阅读 · 0 评论 -
找出数组中第i小元素(时间复杂度Θ(n)--最坏情况为线性的选择算法
找出数组中第i小元素期望时间复杂度:Θ(n)最坏情况的时间复杂度Θ(n^2)int randomized_select(int *array,int start,int end,int index){ if(start == end) return array[start]; int middle = randomized_partition(array,start,end); int position = middle - start + 1; if原创 2021-07-07 10:07:01 · 563 阅读 · 0 评论 -
算法-二分查找
二分查找特点:T(n) = T(n/2 - 1) + c时间复杂度O(lgn)前提:需要已排序的集合int binary_search(int *arr,int start,int end,int key){ if(start<end) { int middle = (start+end)/2; if(arr[middle] == key) return middle; if(key<arr[middle-1])原创 2021-06-19 18:01:19 · 183 阅读 · 0 评论 -
算法-二分搜索-找出最大值和最小值
二分搜索问题找出最大值和最小值 时间复杂度O(n)using System;using System.Collections.Generic;namespace dataLearn{ class Program { static void Main(string[] args) { List<int> list = new List<int> { 10, 3, 6, 4, 7, 1, 9, 2 };原创 2021-06-15 17:38:06 · 756 阅读 · 0 评论 -
算法-二分搜索-找出最大值和次大值
二分搜索<2>找出最大值和第二大值,时间复杂度O(n)class Program { static void Main(string[] args) { List<int> list = new List<int> { 10, 3, 6, 4, 7, 1, 9, 2 }; var v = getMax(list, 0, list.Count - 1); }原创 2021-06-15 17:44:05 · 359 阅读 · 0 评论