您好,欢迎来到九壹网。
搜索
您的当前位置:首页数据结构排序代码

数据结构排序代码

来源:九壹网
简单选择排序

算法:

Smp_Selecpass(ListType &r,int i)

{

k=i;

for(j=i+1;jif (r[j].keyk=j;

if (k!=i)

{ t=r[i];r[i]=r[k];r[k]=t;}

}

Smp_Sort(ListType &r)

{

for(i=1;iSmp_Selecpass(r,i);

}

堆排序

sift(ListType &r,int k,int m)

{

i=k;j=2*i;x=r[k].key;finished=FALSE;

t=r[k];

while((j<=m)&&(!finished))

{

if ((jr[j+1].key)) j++;

if (x<=r[j].key)

finished:=TRUE;

else {r[i]=r[j];i=j;j=2*i;}

}

r[i]=t;

}

HeapSort(ListType &r)

{

for(i=n/2;i>0;i--) sift(r,i,n);

for(i=n;i>1;i--){

r[1]<->r[i];

sift(r,i,i-1)

}

}

归并排序

merge(ListType r,int l,int m,int n,ListType &r2)

{

i=l;j=m+1;k=l-1;

while(i<=m) and(j{

k=k+1;

if (r[i].key<=r[j].key) {r2[k]=r[i];i++;}

else {r2[i]=r[j];j++}

}

if (i<=m) r2[k+1..n]=r[i..m];

if (j<=n) r2[k+1..n]=r[j..n];

}

mergesort(ListType &r,ListType &r1,int s,int t)

{

if (s==t)

r1[s]=r[s];

else

{

mergesort(r,r2,s,s+t/2);

mergesort(r,r2,s+t/2+1,t);

merge(r2,s,s+t/2,t,r1);

}

}

快速排序

int Partition (RedType R[], int low, int high) {

R[0] = R[low]; pivotkey = R[low].key; // 枢轴

while (lowwhile(low=pivotkey)

-- high; // 从右向左搜索

R[low] = R[high];

while (low++ low; // 从左向右搜索

R[high] = R[low];

}

R[low] = R[0]; return low;

}// Partition

void QSort ( SqList &L, int low, int high ) {

//对顺序表L中的子序列r[ low…high] 作快速排序

if ( low < high) {//长度>1

pivot = Partition ( L, low, high );

//一趟快排,将r[ ]一分为二

QSort ( L, low, pivot-1);

//在左子区间进行递归快排,直到长度为1

QSort ( L, pivot+1, high );

//在右子区间进行递归快排,直到长度为1

}

}

冒泡排序

void bubble_sort(SqList *L)

{ int m,i,j,flag=1;

RecordType x;

m=n-1;

while((m>0)&&(flag==1))

{flag=0;

for(j=1;j<=m;j++)

if(L->r[j].key>L->r[j+1].key)

{ flag=1;

x=L->r[j];

L->r[j]=L->r[j+1];

L->r[j+1]=x;

}

m--;

}

}

直接插入排序

void InsertionSort ( SqList &L ) {

// 对顺序表 L 作直接插入排序。

for ( i=2; i<=L.length; ++i )

if (L.r[i].key < L.r[i-1].key) {

L.r[0] = L.r[i]; // 复制为监视哨

for ( j=i-1; L.r[0].key < L.r[j].key; -- j )

L.r[j+1] = L.r[j]; // 记录后移

L.r[j+1] = L.r[0]; // 插入到正确位置

}

}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务