排序算法
1.快速排序
int Partition ( SqList L,int low, int high ){
L.elem[0]=L.elem[low];
int l=low,r=high;
while(l<r){
while(r>l&&L.elem[r]>=L.elem[0]) r--;
L.elem[l]=L.elem[r];
while(l<r&&L.elem[l]<=L.elem[0]) l++;
L.elem[r]=L.elem[l];
}
L.elem[l]=L.elem[0];
return l;
}
2.堆排序
void HeapAdjust( HeapType H, int s, int m){
int now=s;
if(s2<=m&&H.elem[s2]>H.elem[now]){
now<<=1;
}
if(s2+1<=m&&H.elem[s2+1]>H.elem[now]){
now=s*2+1;
}
if(now!=s){
int t=H.elem[s];
H.elem[s]=H.elem[now];
H.elem[now]=t;
HeapAdjust(H,now,m);
}
}
3.归并排序
void Merge(SqList L,int low,int m,int high){
int a[1010],p=0,l=low,r=m+1;
while(l<=m&&r<=high){
if(L.elem[l]<L.elem[r]){
a[p++]=L.elem[l++];
}else{
a[p++]=L.elem[r++];
}
}
while(l<=m){
a[p++]=L.elem[l++];
}
while(r<=high){
a[p++]=L.elem[r++];
}
for(int i=0;i<p;i++){
L.elem[low+i]=a[i];
}
}
4.直接插入排序
void InsertSort(SqList L){
for(int i=2;i<=L.Length;i++){
int p=i;
L.elem[0]=L.elem[p--];
while(p>0&&L.elem[p]>L.elem[0]){
L.elem[p+1]=L.elem[p];
p--;
}
L.elem[p+1]=L.elem[0];
}
}
5.希尔排序
void ShellInsert(SqList L,int dk){
for(int i=dk+1;i<=L.Length;i++){
int p=i;
L.elem[0]=L.elem[p];
p-=dk;
while(p>0&&L.elem[p]>L.elem[0]){
L.elem[p+dk]=L.elem[p];
p-=dk;
}
L.elem[p+dk]=L.elem[0];
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架