快速排序 插入排序
来源:互联网 发布:java 内存泄漏 工具 编辑:程序博客网 时间:2024/05/18 08:20
#include<iostream>#include<stdlib.h>using namespace std;#define ___ <<","<<insertSort(int n,int ia[]){ cout<<"insert sort!"<<endl; for(int i=1;i!=n;++i) for(int j=i;j!=0;--j) if(ia[j]<ia[j-1]){ swap(ia[j],ia[j-1]); }}inline static swap(int &a,int &b){ int temp=a; a=b; b=temp;}int getPivotIndex(int &L,int &R,int ¢er,int ia[]){//获得枢纽值,3值的中间值 if(ia[L]>ia[center]) swap(ia[L],ia[center]); if(ia[center]>ia[R]) swap(ia[center],ia[R]); if(ia[L]>ia[center]) swap(ia[L],ia[center]); return center;}void quickSort(int L,int R,int ia[]){ if(L==R) return; else if(R-L==1&&ia[L]>ia[R]){ swap(ia[L],ia[R]); return; } int center=(L+R)/2; int PivotIndex=getPivotIndex(L,R,center,ia); swap(ia[PivotIndex],ia[R]); int i=L,j=R-1; while(i<j) { for(;i!=R;) if(ia[i]<ia[R]) ++i; else break; for(;j!=L-1;) if(ia[j]>ia[R]) --j; else break; swap(ia[i],ia[j]);//对调元素 } /*最终,i指向大元素,j指向小元素*/ swap(ia[i],ia[j]); swap(ia[i],ia[R]); int l1=L,r1=i-1; int l2=i+1,r2=R; if(l1<=r1) quickSort(l1,r1,ia); if(l2<=r2) quickSort(l2,r2,ia);// for(int k=L;k!=R;++k)// cout<<ia[k]<<",";// cout<<endl;}int main(){ const int count=20; int ia[count]={88,15,22,63,45,55,32,73,99,17, 27,11,36,37,96,53,47,81,62,44}; quickSort(0,count-1,ia); // insertSort(count,ia); for(int i=0;i!=count;++i) cout<<ia[i]<<","; cout<<endl; return system("pause");}
0 0
- 插入排序,快速排序
- 快速排序 插入排序
- 快速排序+插入排序
- 插入排序----快速排序
- 快速排序和插入排序
- 插入排序和快速排序
- 插入排序 和 快速排序
- 快速排序与插入排序
- java 插入排序+快速排序
- 插入排序与快速排序
- 插入排序与快速排序
- 快速排序和插入排序
- 快速排序和插入排序
- 快速排序和插入排序
- 18、插入排序,快速排序
- 插入、归并、快速排序
- 插入,希尔,快速排序
- 【排序总结--插入、快速】
- UVALive 4108城市天际线,混杂着递归与非递归的线段树
- cocos2dx TabelView 表格视图
- 备忘录模式
- c语言,顺序空间游标链表的实现
- 移植Qt-4.8.5出现undefined reference to '__sync_sub_and_fetch_4'解决方法--转载
- 快速排序 插入排序
- 基数排序,,,感想
- 关于强行装逼之代码风骚
- C 程序.data .text .bbs 概述
- NavigationView
- 9.11 编程练习
- 小Tip:从字符串中提取数字
- 106. Construct Binary Tree from Inorder and Postorder Travers
- scala学习之路:1简单的打印输出,以及for循环的使用