各种排序算法--c++实现
时间:2014-04-11 16:56:21
收藏:0
阅读:385
#include<iostream> using namespace std; //堆排序 void FindMaxInHeap(int arr[], int size) { for (int j = size - 1; j > 0;j --) { int parent = j / 2; int child = j; if (j < size - 1 && arr[j] < arr[j+1]) { ++child; } if (arr[child] > arr[parent]) { int tmp = arr[child]; arr[child] = arr[parent]; arr[parent] = tmp; } } } void HeapSort(int arr[], int size) { for (int j = size; j > 0; j--) { FindMaxInHeap(arr, j); int tmp = arr[0]; arr[0] = arr[j - 1]; arr[j - 1] = tmp; } } //快速排序 void quicksort(int a[],int left,int right) { int i,j,temp; i=left; j=right; temp=a[left]; if(left>right) return; while(i!=j) { while(a[j]>temp && j>i) j--; if(j>i) a[i++]=a[j]; while(a[i]<temp && j>i) i++; if(j>i) a[j--]=a[i]; } a[i]=temp; quicksort(a,left,i-1); quicksort(a,i+1,right); } //选择排序 void selectsort(int a[],int len) { int i,j,min,temp; for(i=0;i<len;i++) { min=i; for(j=i+1;j<len;j++) { if(a[j]<a[min]) { min=j; } } if(min!=i) { temp=a[i]; a[i]=a[min]; a[min]=temp; } } } //直接插入排序 void insertsort(int a[],int len) { int i,j,temp,min; for(j=1;j<len;j++) { min=a[j]; for(i=j-1;i>=0;i--) { if(a[i]>min) { temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; min=a[i]; } } } } //冒泡排序 void bubblesort(int a[],int len) { int i,j,temp,is_swp; for(i=0;i<len;i++) { for(j=0;j<len-i-1;j++) { if(a[j]>a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } } return ; } int main() { int arr[] = {13, 5, 3, 12, 6, 21, 8, 19}; int n = sizeof(arr) / sizeof(arr[0]); cout<<"排序结果为:"<<endl; HeapSort(arr, n); //quicksort(arr,0,n-1); //selectsort(arr,n); //insertsort(arr,n); //bubblesort(arr,n); for(int i=0;i<n;i++) cout<<arr[i]<<" "; cout<<endl; return 0; }
原文:http://blog.csdn.net/woailvmengmeng/article/details/23357827
评论(0)