当前位置:网站首页>O (n) complexity hand tear sorting interview questions | an article will help you understand counting sorting
O (n) complexity hand tear sorting interview questions | an article will help you understand counting sorting
2022-06-24 22:40:00 【Rice shrimp】
Count sorting And Radix sorting It is a special method of bucket sorting
It's really cold these two nights ...
that , What sort of sort is count sort ?
Counting sort is not a comparison sort algorithm , The algorithm is based on 1954 Year by year Harold H. Seward Put forward , The time complexity is reduced to O(N).
What are the steps of the counting sorting algorithm ?
- First step : Find out the largest element in the original array , Write it down as
max. - The second step : Create a new array
count, Its length ismaxAdd 1, The default values of its elements are 0. - The third step : Go through the elements in the original array , Take the elements in the original array as
countIndex of array , Take the number of elements in the original array ascountThe element value of the array . - Step four : Create an array of results
result, Starting indexindex. - Step five : Traverse
countArray , Find out that the element value is greater than 0 The elements of , Fill its corresponding index as the element value toresultGo to... In the array , Every time I deal with ,countThe value of this element in minus 1, Until the value of the element is not greater than 0, Sequential processingcountThe rest of the elements in . - Step six : Return result array
result.
It's abstract , Is there an easy way to understand , For example, illustration ?



But it's a waste of space !
Like a set of data {101,109,108,102,110,107,103}, The maximum value is 110, Follow the previous thinking , We need to create a length of 111 Count array of , But we can see , The one in front of it [0,100] That's a complete waste of space .
So how to optimize ?
Set the length of the array to max-min+1, That is to find out not only the maximum value , And find the minimum , Determine the length of the count array based on the difference between the two .
Let's make a joke and relax
Next, we will use the optimized idea to solve a common hand tearing sorting problem in the interview
Topic

Submission

Count sort code ( optimization )
class Solution {
public:
vector<int> sortArray(vector<int>& nums) {
int n = nums.size();
int max = nums[0], min = nums[0];
for(int i=1; i<n; i++) {
if(nums[i] > max) max = nums[i];
if(nums[i] < min) min = nums[i];
}
vector<int> count(max-min+1,0);
for(int i=0; i<n; i++)
count[nums[i]-min]++;
int k=0;
for(int i=0; i<max-min+1; i++) {
while(count[i]--) {
nums[k++] = i+min;
}
}
return nums;
}
};Corresponding cardinality sorting code
class Solution {
public:
vector<int> sortArray(vector<int>& nums) {
int n = nums.size();
int max = abs(nums[0]);
for(int i=1; i<n; i++)
if(max<abs(nums[i]))
max = abs(nums[i]);
int w = 0;
while(max>0) {
max /= 10;
w++;
}
int flag = 1;
vector<int> ans(n);
for(int i=0; i<w; i++) {
vector<int> bucket(19,0);
for(int j=0; j<n; j++) {
int temp = nums[j]/flag%10+9;
bucket[temp]++;
}
for(int j=1; j<19; j++)
bucket[j] += bucket[j-1];
for(int j=n-1; j>=0; j--) {
int temp = nums[j]/flag%10+9;
ans[--bucket[temp]] = nums[j];
}
nums.swap(ans);
flag*=10;
}
return nums;
}
};Refer to the boss's A paper to understand the counting and sorting algorithm ! - Programmer Ogawa - Blog Garden
边栏推荐
- OSPF basic content
- 理想L9,智能座舱新潮流
- 短视频商城系统,scroll-view如何自适应页面剩余高度
- L2 元年,Arbitrum Nitro 升级带来更兼容高效的开发体验
- Row and column differences in matrix construction of DX HLSL and GL glsl
- YGG 近期游戏合作伙伴一览
- Power system | IEEE paper submission process
- MySQL + JSON = King fried!!
- Extend your kubernetes API with aggregated apiserver
- Code farmers should also understand the IPv4 subnet division of point networks
猜你喜欢

A pit in try with resources

Fanuc robot_ Introduction to Karel programming (1)

The ktp900f mobile download program of the fail safe mobile panel prompts that the download cannot be performed, and the target device is running or not in the transmission mode

ThreadLocal memory leak

Programmers become gods by digging holes in one year, carrying flags in five years and becoming gods in ten years

面试害怕被问MySQL相关问题 ?这份三万字精华总结 + 面试100 问,吊打面试官完全够了

Servlet详解

理想L9,智能座舱新潮流

Technology Review: what is the evolution route of container technology? What imagination space is there in the future?

1. fully explain the basic principles of IPSec
随机推荐
Leetcode: push domino (domino simulation)
Firewall working principle and detailed conversation table
华大4A0GPIO设置
OA system -- save the verification code to session
Short video mall system, how does scroll view adapt to the remaining height of the page
A girl has been making hardware for ten years. 。。
Heartless sword Chinese English bilingual poem 003 The sea of books
Raspberry pie preliminary use
MySQL + JSON = King fried!!
Heavyweight! Fada is listed as a "specialized and new" enterprise
Selection and comparison of message oriented middleware MQ
NIO多路复用之Selector的使用
Creating files, recursively creating directories
【个人实验报告】
In the multi network card environment, the service IP registered by Nacos is incorrect, resulting in inaccessible services
Cache control of HTTP
短视频商城系统,scroll-view如何自适应页面剩余高度
堆内存分配的并发问题
Process communication mode
Interrupt, interrupted, isinterrupted differences
