下载此文档

实验周实验报告.docx


文档分类:高等教育 | 页数:约8页 举报非法文档有奖
1/8
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/8 下载此文档
文档列表 文档介绍
:
1冒泡:
void sort1(int *a,int n)//冒泡
{
int i,j;
int temp;
for(i=0;i<n-1;i++)
for(j=n-2;j>=i;j--)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
相邻位置进行交换,较小的排到前面,第二层循环每次将最小的数值逐渐地像冒泡一样排到第一层循环的下标为i的位置,最终实现从小到大排序。
:
void sort2(int *a,int n)//选择
{
int i,j,k;
int temp;
for(i=0;i<n-1;i++)
{
k=i;
for(j=k+1;j<n;j++)
{
if(a[k]>a[j])
{
k=j;
}
}
if(k!=i)
{
temp=a[k];
a[k]=a[i];
a[i]=temp;
}
}
}
首层循环按顺序标记第i个元素(i=1,2,3……),第二层循环找出第i个元素之后比a[i]小的最小值,并将下标赋给k,比较k与i判断a[i]是否为最小值,否则将最小值交换在a[i]处,
始终保证a[i]为最小的,实现数据从小到大排序。
3. 插入法排序:
void sort3(int *a,int n)//插入
{
int i,j,temp;
for(i=0;i<n;i++)
{
temp=a[i];
j=i-1;
while(j>=0&&temp<a[j])
{
a[j+1]=a[j];
j--;
}
a[j+1]=temp;
}
}
第一层循环按顺序找到一个数据标记,并开始找这个数据之前的比标记的数值大的数据,再将标记的数据插入到找到的数据之前(通过数组让位的方式插入数据)。

void sort4(int *a,int n)//shell
{
int i,j,temp,k;
k=n/2;
do
{
for(i=0;i<n;i+=k)
{
temp=a[i];
j=i-k;
while(j>=0&&temp<a[j])
{
a[j+k]=a[j];
j-=k;
}
a[j+k]=temp;
}
k=k/2;
}while(k>=1);
}
Shell法事实上是一种优化的选择法排序,先是在一定间距上进行排序(间隔为k),后
来不断细化,减少了插入排序算法的时间复杂度。
:
void sort5(int *a,int i,int j)//快速
{
int m,n,k,temp;
m=i;
n=j;
k=a[j];
do{
while(a[m]<k&&m<j) m++;
while(a[n]>k&&n>i) n--;
if(m<=n)
{
temp=a[m];
a[m]=a[n];
a[n]=temp;
m++;
n--;
}
}while(m<=n);
if(n

实验周实验报告 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数8
  • 收藏数0 收藏
  • 顶次数0
  • 上传人mh900965
  • 文件大小30 KB
  • 时间2017-12-26