几个最简单的排序代码
2009-11-04 13:11
309 查看
#include <iostream> #include "public.h" using namespace std; template <class T> void bubble(T *data,int n)//冒泡 { int i,j; T temp; for(i=0;i<n;i++) { for(j=n-1;j>i;j--) if(data[i]<data[j]) Swap(data[j],data[i]); } } template <class T> void select(T *data,int n)//选择 { int i,j,temp; for(i=0;i<n;i++) { temp = i; for(j=i+1;j<n;j++) if(data[temp]>data[j]) temp = j; Swap(data[i],data[temp]); } } template <class T> void insert(T *data,int n)//插入 { int i,j; T temp; for(i=1;i<n;i++) { j=i; temp = data[i]; while(j>0&&data[j-1]>temp) { data[j]=data[j-1]; j--; } data[j]=temp; } } template <class T> void sswap(T &A,T &B) { T TEMP; TEMP = B; B = A; A = TEMP; } template <class T> int quick(T *data,int low,int high)//快速 { int scanUp,scanDown; T pivot; int mid; if(low>high) { return -1; } else if(high-low==1) { if(data[high]<data[low]) sswap(data[high],data[low]); return -1; } mid = (high+low)/2; pivot = data[mid]; sswap(data[low],data[mid]); scanUp = low+1; scanDown = high; while(scanDown>scanUp) { while(scanUp<=scanDown&&data[scanUp]<=pivot) { scanUp++; } while(data[scanDown]>pivot) { scanDown--; } if(scanUp<scanDown) sswap(data[scanUp],data[scanDown]); } data[low] = data[scanDown]; data[scanDown] = pivot; if(low<scanDown-1) quick(data,low,scanDown-1); if(scanDown+1<high) quick(data,scanDown+1,high); return 0; } int main() { int data[11]={2334,564,657,6,87,4354,342,34,5,543}; cout<<"please input a num q,s,b or i:"<<endl; char a; cin>>a; switch(a) { case 'q': quick(data,0,9); break; case 's': select(data,10); break; case 'b': bubble(data,10); break; case 'i': insert(data,10); break; default: cout<<"input error"<<endl; break; } print(data); }
相关文章推荐
- 简单代码,实现快速判断几个EDIT是否允许为空
- 分享几个简单的WPF控件(代码)
- 几个简单动画代码
- javascript 表格内容排序 简单操作示例代码
- 简单的快速排序,将数组排序然后从小到大输出不重复的数。(渣代码,写得丑)
- 空闲了 写几个简单的排序实现
- 简单的jquery拖拽排序效果实现代码
- 简单选择、冒泡、插入排序思想及Java实现代码
- javascript 表格内容排序 简单操作示例代码
- 简单的C语言快速排序实现代码
- PHP 简单数组排序实现代码
- 二叉树排序在Java代码的简单实现
- 几个简单的代码优化技术(一)
- LintCode【简单】39. 恢复旋转排序数组 。代码及思路
- 直接排序和冒泡排序简单讲解(JAVA代码)
- 简单的Memory leak跟踪(四)参考代码、组织和几个问题的讨论
- c 几个简单的窗口操作代码
- C++三种排序,快速排序、选择排序、冒泡排序----简单代码
- Android ViewPager使用详解,加载几个简单布局案例+代码