各大排序算法
来源:互联网 发布:怎么做淘宝网店客服 编辑:程序博客网 时间:2024/05/16 13:45
#include <iostream>#include <algorithm>#include <string>using namespace std;void insert_sort(int a[],int n){ int h,i,j,temp; for(h=n/2; h>0; h/=2) { for (i = h; i < n; i+=h) { temp = a[i]; for (j = i - h; a[j] > a[j + h] && j >= 0; j-=h) swap(a[j], a[j + h]); a[j+h]=temp; } }}void bubble_sort(int a[],int len){ int i= 0, j = 0 , exchange = 0 ; for(i=1 ; i < len ; i++){ for(j = 0 ; j < len-i ; ++j ) { if(a[j+1] < a[j]){ swap(a[j],a[j+1]); exchange=1; } } if( exchange != 1 ) return; }}void quick_sort(int a[],int low,int high){ int i,j,pivot; if(low < high) { pivot = a[low]; i=low , j = high; while( i < j ){ while(i<j && a[j]>=pivot) j--; if(i<j) a[i++]=a[j]; while(i<j && a[i]<= pivot) i++; if(i < j) a[j--] = a[i]; } a[i]=pivot; quick_sort(a,low,i-1); quick_sort(a,i+1,high); }}void select_sort(int a[], int len) { int i, j, min, temp; for(i=0; i < len-1 ; ++i) { min = i; for(j=i+1; j < len; ++j) if(a[min] > a[j]) min=j; swap(a[min],a[i]); }}int heapSize= 0;int Left(int index){ return ( (index<<1)+1 ); }int Right(int index){ return ((index << 1)+2) ; }void max_heapify(int arr[], int start, int end) { //建立父節點指標和子節點指標 int dad = start; int son = dad * 2 + 1; while (son <= end) { //若子節點指標在範圍內才做比較 if (son + 1 <= end && arr[son] < arr[son + 1]) //先比較兩個子節點大小,選擇最大的 son++; if (arr[dad] > arr[son]) //如果父節點大於子節點代表調整完畢,直接跳出函數 return; else { //否則交換父子內容再繼續子節點和孫節點比較 swap(arr[dad], arr[son]); dad = son; son = dad * 2 + 1; } }}void heap_sort(int arr[], int len) { //初始化,i從最後一個父節點開始調整 for (int i = len / 2 - 1; i >= 0; i--) max_heapify(arr, i, len - 1); //先將第一個元素和已经排好的元素前一位做交換,再從新調整(刚调整的元素之前的元素),直到排序完畢 for (int i = len - 1; i > 0; i--) { swap(arr[0], arr[i]); max_heapify(arr, 0, i - 1); }}int main(int argc ,char** argv){ int a[]={7,30,5,2,51,4,6}; //insert_sort(a,7); //bubble_sort(a,7); //quick_sort(a,0,7); //select_sort(a,7); heap_sort(a,7); for (int i = 0; i < 7 ; ++i) { cout<<a[i]<<" "<<endl; } cout<<2500<<endl; return 0;}
阅读全文
0 0
- 各大排序算法
- 各大排序算法
- 各大排序算法总结
- 各大排序算法汇总
- java各大排序算法总结
- 各大排序算法性能比较
- 各大排序算法性能比较
- 各大排序算法的总结
- 各大排序算法自己总结
- 各大排序算法优缺点对比
- 各大排序算法优缺点总结
- 面试常见的各大排序算法
- 排序算法大总结
- 五大排序 算法
- 十大排序算法
- 排序算法大总结
- 排序算法大集合
- 8大排序算法
- 对象的扩展
- Call requires API level 18 (current min is 14):
- 图论题目
- Windows下WebStorm配置使用SVN详细过程
- 实用的sublime插件集合 – sublime推荐必备插件
- 各大排序算法
- css 列表横向排列
- 独爱 Vim 的Linux老司机理由竟然是这个!!
- UML图例介绍
- VSTO Office二次开发PPTRibbonX命令操作及对象添加
- 数据库的基本操作
- Impala重要组件介绍
- python click
- 掌握云计算前沿技术,在线学习4个月挑战月薪30万