#include <iostream> using namespace std; int b[10000001]; void swap(int &a, int &b) { int temp = a; a = b; b = temp; } void bubble_sort(int *arr, int n) { for (int i = n - 1; i >= 1; i--) { for (int j = 0; j < i; j++) { if (arr[j] > arr[j + 1]) swap(arr[j], arr[j + 1]); } } } void insertion_sort(int *arr, int n) { for (int i = 1; i < n; i++) { for (int j = i; j >= 1; j--) { if (arr[j] < arr[j - 1]) swap(arr[j], arr[j - 1]); } } } void selection_sort(int *arr, int n) { for (int i = 0; i < n - 1; i++) { int mini = i; for (int j = i; j < n; j++) { if (arr[j] < arr[mini]) mini = j; } swap(arr[i], arr[mini]); } } void counting_sort(int *arr, int n) { int maximum = arr[0]; for (int i = 1; i < n; i++) { if (arr[i] > maximum) maximum = arr[i]; } int ind = 0; int size = maximum + 1; int count[size]; for (int i = 0; i < size; i++) count[i] = 0; for (int i = 0; i < n; i++) count[arr[i]]++; for (int i = 0; i < size; i++) { while (count[i]) { arr[ind++] = i; count[i]--; } } } void merge(int *arr, int lo, int mid, int hi) { int curr1 = lo, curr2 = mid + 1; int ind = lo; while (curr1 <= mid && curr2 <= hi) { if (arr[curr1] > arr[curr2]) b[ind++] = arr[curr2++]; else b[ind++] = arr[curr1++]; } while (curr1 <= mid) b[ind++] = arr[curr1++]; while (curr2 <= hi) b[ind++] = arr[curr2++]; for (int i = lo; i <= hi; i++) arr[i] = b[i]; } void merge_sort(int *arr, int lo, int hi) { if (lo == hi) return; int mid = (lo + hi) / 2; merge_sort(arr, lo, mid); merge_sort(arr, mid + 1, hi); merge(arr, lo, mid, hi); } void countsort(int *arr,int n,int pos){ int count[10]={}; for(int i = 0;i<n;i++) count[(arr[i]/pos)]++; for(int i = 1;i<10;i++) count[i]+=count[i-1]; for(int i=n-1;i>=0;i--) b[--count[(arr[i]/pos)]]=arr[i]; for(int i=0;i<n;i++) arr[i]=b[i]; } void radix_sort(int *arr,int n){ int maxi = arr[0]; for(int i=0;i<n;i++) if(arr[i]>maxi)maxi=arr[i]; for(int pos=1;(maxi/pos)>0;pos*=10){ countsort(arr,n,pos); } } int main() { int n; cin >> n; int arr[n]; for (int i = 0; i < n; i++) cin >> arr[i]; // bubble_sort(arr,n); // insertion_sort(arr,n); // selection_sort(arr,n); // counting_sort(arr,n); // merge_sort(arr,0,n-1); // radix_sort(arr,n); for (int i = 0; i < n; i++) cout << arr[i] << " "; cout << endl; }