各种排序算法
来源:互联网 发布:手机电池检测软件 编辑:程序博客网 时间:2024/05/13 05:40
1.希尔排序
希尔排序的下界和采取的序列有关系
typedef int ElementType;void shellsort(ElementType array[],int N){int i,j,Increment;ElementType tmp;for(Increment=N/2;Increment>0;Increment/=2)for(i=Increment;i<N;i++){tmp=array[i];for(j=i;j>=Increment;j-=Increment)if(tmp<array[j-Increment])array[j]=array[j-Increment];elsebreak;array[j]=tmp;}}
2.堆排序
typedef int ElementType;#define LeftChild(i) (2*(i)+1)void perDown(ElementType A[],int i,int N) {int child;ElementType tmp;for(tmp=A[i];LeftChild(i)<N;i=child){child=LeftChild(i);if(child!=N-1&&A[child+1]>A[child])child++;if(tmp<A[child])A[i]=A[child];elsebreak;}A[i]=tmp;}void HeadSort(ElementType A[],int N){int i,tmp;for(i=N/2;i>=0;i--) perDown(A,i,N);for(i=N-1;i>0;i--){tmp=A[0];A[0]=A[i];A[i]=tmp;perDown(A,0,i);}}
3.插入排序
typedef int ElementType;void InsertSort(ElementType A[],int N){int i,j, tmp; for(i=1;i<N;i++) {tmp=A[i];for( j=i;j>0&&A[j-1]>tmp;j--)A[j]=A[j-1];A[j]=tmp; }}
4.快速排序
typedef int ElementType;void QuickSort(ElementType A[],int left,int right){ if(left>=right) return ; int tmp,i,j; tmp=A[left]; i=left; j=right; while(1) { do{ i++; }while(i<=right&&A[i]<tmp); do{ j--; }while(A[j]>tmp); if(i>j) break; tmp=A[i]; A[i]=A[j]; A[j]=tmp; } tmp=A[left]; A[left]=A[j]; A[j]=tmp; QuickSort(A,left,j-1); QuickSort(A,j+1,right);}
0 0
- 【算法】各种排序算法
- 各种排序算法
- 各种排序算法
- 各种排序算法收集
- 各种排序算法
- 各种排序算法小结
- 各种排序算法小结
- 各种内部排序算法!
- 各种排序算法小结
- 各种排序算法
- 各种排序算法
- 各种排序算法介绍
- 各种排序算法
- 各种排序算法比较
- 各种排序算法
- 各种排序算法
- C++各种排序算法
- 各种排序算法
- kmp 学习 hihocoder #1015
- Structs框架下,action取值checkbox的一种异常情况
- java第三次作业:Java与socket实现
- eclipse自定义视图
- linux c++ 服务器端开发面试必看书籍
- 各种排序算法
- 知识点扫盲(tcp,QList),dji
- 通过网络控制mini2440上的LED
- 编程综述
- 卷积C语言实现
- 为何img、input等内联元素可以设置宽、高
- 2015年oj:计算圆的问题
- UIKeyBoard高度的监控
- hihocoder #1014 trie 树