defgravity_sort(a):ifnot a:return
top =max(a)
levels =[0]* top
for value in a:for level inrange(value):
levels[level]+=1for i inrange(len(a)):
beads =sum(1for level inrange(top)if levels[level]> i)
a[len(a)-1- i]= beads
functiongravitySort(a){if(a.length ===0)return;const top =Math.max(...a);const levels =newArray(top).fill(0);for(const value of a){for(let level =0; level < value; level++) levels[level]++;}for(let i =0; i < a.length; i++){let beads =0;for(let level =0; level < top; level++){if(levels[level]> i) beads++;}
a[a.length -1- i]= beads;}}
voidgravity_sort(int a[],int n,int top){int* levels =calloc(top,sizeof(int));for(int i =0; i < n; i++){for(int level =0; level < a[i]; level++) levels[level]++;}for(int i =0; i < n; i++){int beads =0;for(int level =0; level < top; level++){if(levels[level]> i) beads++;}
a[n -1- i]= beads;}free(levels);}
voidgravity_sort(std::vector<int>& a){if(a.empty())return;int top =*std::max_element(a.begin(), a.end());
std::vector<int>levels(top,0);for(int value : a){for(int level =0; level < value; level++) levels[level]++;}for(size_t i =0; i < a.size(); i++){int beads =0;for(int level =0; level < top; level++){if(levels[level]>static_cast<int>(i)) beads++;}
a[a.size()-1- i]= beads;}}
staticvoidGravitySort(int[] a){if(a.Length==0)return;int top = a.Max();int[] levels =newint[top];foreach(int value in a){for(int level =0; level < value; level++) levels[level]++;}for(int i =0; i < a.Length; i++){int beads =0;for(int level =0; level < top; level++){if(levels[level]> i) beads++;}
a[a.Length-1- i]= beads;}}
staticvoidgravitySort(int[] a){if(a.length ==0)return;int top =Arrays.stream(a).max().getAsInt();int[] levels =newint[top];for(int value : a){for(int level =0; level < value; level++) levels[level]++;}for(int i =0; i < a.length; i++){int beads =0;for(int level =0; level < top; level++){if(levels[level]> i) beads++;}
a[a.length -1- i]= beads;}}