#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(" "); } ///选择排序,时间复杂度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; } }