当前位置:网站首页>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
边栏推荐
- Redis hop table
- Zero code can apply data visualization to enterprise management
- STP spanning tree protocol Foundation
- Envoy obtain the real IP address of the client
- Development of live broadcast software app, and automatic left-right sliding rotation chart advertising
- 磁盤的結構
- A pit in try with resources
- Docker installs MySQL 8.0. Detailed steps
- 华大04a工作模式/低功耗模式
- Fanuc robot_ Introduction to Karel programming (1)
猜你喜欢

Fanuc robot_ Introduction to Karel programming (1)

Learning bit segment (1)

Industrial development status of virtual human

Servlet details

DX 的 HLSL 和 GL 的 GLSL的 矩阵构建的行列区别

nuScenes——数据集配置过程中遇到图像文件缺失或大小为0时的补救方法

AQS source code analysis

Technology inventory: past, present and future of Message Oriented Middleware

Kubevela v1.2 release: the graphical operation console velaux you want is finally here

Online filing process
随机推荐
Industrial development status of virtual human
Problèmes de concurrence dans l'allocation de mémoire en tas
【軟件工程】期末重點
Power system | IEEE paper submission process
find your present (2)
面试害怕被问MySQL相关问题 ?这份三万字精华总结 + 面试100 问,吊打面试官完全够了
Envoy obtain the real IP address of the client
揭秘B站,程序员穿女装敲代码,效率更高是真的吗?
Can AI chat robots replace manual customer service?
Idea global search replace shortcut key
Structure du disque
CA Zhouji - the first lesson in 2022 rust
A pit in try with resources
Huada 04A operating mode / low power consumption mode
Chapter 10 project stakeholder management
interrupt、interrupted 、isInterrupted 区别
Code farmers should also understand the IPv4 subnet division of point networks
Common voting governance in Dao
OSPF basic content
Principle of IP routing
