#include <stdio.h> void BubbleSort(int arr[],int n) { int i,j,tmp; for(i=0;i<n-1;i++) { for(j=0;j<n-i-1;j++) { if(arr[j] > arr[j+1]) { tmp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = tmp; } } } } void SelectSort(int arr[],int n) { int i,j,tmp; for(i=0;i<n-1;i++) { for(j=i+1;j<n;j++) { if(arr[i] < arr[j]) { tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; } } } } void insert_sort(int arr[],int n) { int i,j,tmp; for(i=1;i<n;i++) { tmp = arr[i]; j = i-1; while(tmp > arr[j]) { arr[j+1] = arr[j]; j--; if(j==-1) break; } arr[j+1] = tmp; } } int partitions(int arr[],int low,int high) { int pivotkey = arr[low]; while(low<high) { while(low < high && arr[high] >= pivotkey) --high; arr[low] = arr[high]; while(low < high && arr[low] <= pivotkey) ++low; arr[high] = arr[low]; } arr[low] = pivotkey; return low; } void QuickSort(int arr[],int low,int high) { int pivottag; if(low < high) { pivottag = partitions(arr,low,high); QuickSort(arr,low,pivottag-1); QuickSort(arr,pivottag+1,high); } } void print(int arr[],int n) { int i; for(i=0;i<n;i++) { printf("arr[%d] = %d\n",i,arr[i]); } } int main(void) { int arr[] = {87,23,4,12,67,32}; int n; n = sizeof(arr)/sizeof(int); printf("快速排序 (从大到小)\n"); QuickSort(arr,0,n-1); print(arr,n); printf("-------------------------\n"); printf("插入排序 (从大到小)\n"); insert_sort(arr,n); print(arr,n); printf("-------------------------\n"); printf("冒泡排序 (从小到大)\n"); BubbleSort(arr,n); print(arr,n); printf("-------------------------\n"); printf("选择排序 (从大到小)\n"); SelectSort(arr,n); print(arr,n); return 0; }