#include <stdio.h>
void bubble_sort(int arr[], int n);///稳定
void insert_sort(int arr[],int n);///稳定
void selection_sort(int arr[],int n);///不稳定
void quick_sort(int arr[],int start,int end);///不稳定
int main()
{
int a[105];
int n;
scanf("%d",&n);
int i;
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
//selection_sort(a,n);
//bubble_sort(a,n);
//quick_sort(a,0,n-1);
insert_sort(a,n);
for(i=0;i<n;i++){
printf("%d ",a[i]);
}
printf("\n");
}
///选择排序,时间复杂度O(n^2),是不稳定的,如4 5 5 2 6
void selection_sort(int arr[],int n)
{
int i;
for(i=0;i<n-1;i++){
int min = i;
int j;
for(j=i+1;j<n;j++){
if(arr[min] > arr[j]){
min = j;
}
}
if(min != i){
int tmp;
tmp = arr[min];
arr[min] = arr[i];
arr[i] = tmp;
}
}
}
///冒泡排序,时间复杂度O(n^2),是稳定的
void bubble_sort(int arr[], int n)
{
int i, j, temp;
for (j = 0; j < n - 1; j++)
for (i = 0; i < n - 1 - j; i++)
{
if(arr[i] < arr[i + 1])
{
temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
}
///快速排序,时间复杂度O(n*log(n)),是不稳定的
void swap(int arr[],int i,int j)
{
int tmp;
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
void quick_sort(int arr[],int start,int end) ///end代表数组中最后一个元素的位置
{
if(start >= end){
return ;
}
int x;
int i = start;
int j = end;
x = arr[start];
while(i != j){
while(i < j && arr[j] > x){
j--;
}
swap(arr,i,j);
while(i < j && arr[i] <= x){
i++;
}
swap(arr,i,j);
}
quick_sort(arr,start,i-1);
quick_sort(arr,i+1,end);
}
///插入排序,时间复杂度O(n^2),是稳定的
void insert_sort(int arr[],int n)
{
int i=0;
int tmp;
for(i=1;i<n;i++){
int j = i-1;
tmp = arr[i];
while(arr[j] > tmp && j >= 0){
arr[j+1] = arr[j];
j--;
}
arr[++j] = tmp;
}
}