[转贴] C++常用排序算法

//选择排序法SelectionSort(int arr[],int n) template void SelectionSort(T arr[],int n) { int smallIndex; //表中最小元素的下标 int pass,j; //用来扫描子表的下标 T temp; //用来交换表元素的临时变量 //pass的范围是0~n-2 for (pass=0;pass void deSelSort(T arr[],int n) { int smallIndex,largeIndex; //表中最小及最大元素的下标 int leftPass=0,rightPass=n-1,i,j; //用来从表左边及右边扫描子表的下标 T temp; //用于交换元素的临时变量 while (leftPass<=rightPass) { //从左边及右边开始扫描子表 smallIndex=leftPass; largeIndex=rightPass; //j和i遍历整个子表arr[LeftPass]~arr[rightPass] for (i=leftPass+1;i leftPass;j--) if(arr[j]>arr[largeIndex]) largeIndex=j; if(largeIndex!=rightPass) { temp=arr[rightPass]; arr[rightPass]=arr[largeIndex]; arr[largeIndex]=temp; } //从两头收缩子表 leftPass++; rightPass--; } } //自编冒泡法排序算法函数bubbleSort()的实现 template int bubbleSort(T arr[],int n) { bool exchanged=false; //是否发生交换 int i,j; //用于遍历子表的下标 T temp; //用于交换元素的临时变量 //开始遍历过程,以下标j构成子表,共有n-1个子表 for (j=n-1;j>=0;j--) //j从后往前收缩n-1~0,以构成子表0~n-1,0~n-2,0~n-3..0~1 { exchanged=false; for (i=0;i arr[i+1]) { temp=arr[i]; arr[i]=arr[i+1]; arr[i+1]=temp; exchanged=true; } } if (!exchanged) return n-j-1;//如果在一次遍历中没有发生交换,则表示已经 //排序好,中断遍历过程 } return n-1-j; } //冒泡法排序一般算法函数bubbleSortEx()的实现 template int bubbleSortEx(T arr[],int n) { int i,pass; //用于遍历子表的下标 T temp; //用于交换元素的临时变量 //开始遍历过程,以下标j构成子表,共有n-1个子表 for (pass=0;pass arr[i+1]) { temp=arr[i]; arr[i]=arr[i+1]; arr[i+1]=temp; } } } return pass; }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值