1 / 5
文档名称:

实现直接插入排序-二分法插入排序、希尔排序-冒泡排序-快速排序-直接选择排序的算法(共5页).doc

格式:doc   大小:20KB   页数:5页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

实现直接插入排序-二分法插入排序、希尔排序-冒泡排序-快速排序-直接选择排序的算法(共5页).doc

上传人:miao19720107 2022/4/12 文件大小:20 KB

下载得到文件列表

实现直接插入排序-二分法插入排序、希尔排序-冒泡排序-快速排序-直接选择排序的算法(共5页).doc

相关文档

文档介绍

文档介绍:精选优质文档-----倾情为你奉上
精选优质文档-----倾情为你奉上
专心---专注---专业
专心---专注---专业
精选优质文档-----倾情为你奉上
专心---专注---专业
#include<>
#d]至R[t]的元素进行快速排序
int i=s,j=t;
LineList temp;
if(s<t) //区间内至少存在一个元素的情况
{
temp=R[s]; //用区间的第1个记录作为基准
while(i!=j) //从区间两端交替向中间扫描,直至i=j为止
{
while(j>i && R[j].key>)
{ //从右向左扫描,[j]
j--;
R[i]=R[j]; //找到这样的R[j],则R[i]和R[j]交换
while(i<j && R[i].key<)
i++; //从左向右扫描,[i]
R[j]=R[i]; //找到这样的R[i],则R[i]和R[j]交换
}
R[i]=temp;
QuickSort(R,s,i-1); //对左区间递归排序
QuickSort(R,i+1,t); //对右区间递归排序
}
}
}
/* 二分法插入排序,升序 */
void BinarySort(LineList R[], int n)
{
int x;
int l, r, m;
int i, j;

/* 从最先的两个元素开始排序 */
for (i=1; i<n; i++)
{
x=R[i].key;
l=1; /* 下限 */
r=i-1; /* 上限 */

while (l<=r)
{
/* 中间位置 */
m=(l+r)/2;
精选优质文档-----倾情为你奉上
精选优质文档-----倾情为你奉上
专心---专注---专业
专心---专注---专业
精选优质文档-----倾情为你奉上
专心---专注---专业
if (x<R[m].key) r=m-1; /* 上限下移 */
else l=m+1; /* 下限上移 */
}

/* 插入元素 */
for (j=i-1; j>=l; j--)
R[j+1]=R[j];
R[l].key=x;
}
}
/* 直接选择排序,升序 */
void SelectSort(LineList R[],int n)
{
int i,j,k;
LineList tmp;
for (i=0;i<n-1;i++)
{
k=i;
for (j=i+1;j<n;j++)
if (R[j].key<R[k].key)
k=j; //用k指出每趟在无序区段的最小元素
tmp=R[i]; //将R[k]与R[i]交换
R[i]=R[k];
R[k]=tmp;
}
}
/* 希尔排序,升序 */
void ShellSort(LineList R[],int