数据结构:各种排序

来源:互联网 发布:淘宝双十一不能报名 编辑:程序博客网 时间:2024/06/07 11:59
#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;}


 

原创粉丝点击