毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 课程设计 >> 正文

内部排序演示C++ 第2页

更新时间:2010-1-30:  来源:毕业论文
内部排序演示C++ 第2页
void insertion_sort(int n,int A[])//插入排序
{
       int mt=0;//移动次数movetime
       int ct=0;//比较次数cmdtime
       int i,j,temp;
       int a[N];
       for(i=0;i<n;i++)
              a[i]=A[i];//使数组a[]与数组A[]完全相同,对数组a[]进行操作(不改动A[],可以使A[]被其他函数调用)
       for(i=1;i<n;i++)
       {
              temp=a[i],
              mt++;
              for(j=i-1;j>=0&&temp<a[j];j--,ct++)
                     a[j+1]=a[j],
                     mt++;
              a[j+1]=temp,
              mt++;
       }
       printf("插入排序");
       output(n,a,ct,mt);
}

void shell_sort(int n,int A[])//希尔排序
{
       int mt=0;//移动次数movetime
       int ct=0;//比较次数cmdtime
       int i,j,k,h,y;
       int a[N];
       for(i=0;i<n;i++)
              a[i]=A[i];//使数组a[]与数组A[]完全相同,对数组a[]进行操作(不改动A[],可以使A[]被其他函数调用)
       for(i=0;i<t;i++)
       {    h=d[i];
              for(j=h;j<n;j++)
              {      y=a[j],
                     mt++;
                     for(k=j-h,ct++,mt++;k>=0&&y<a[k];k-=h)
                            a[k+h]=a k];
                     a[k+h]=y;
              }
       }
       printf("希尔排序");
       output(n,a,ct,mt);
 
}
void main()
{    int n;
       int i;
       int A[N];
    printf("***********************内部排序************************\n");
    printf("请输入数组大小(小于100):");
       scanf("%d",&n);//输入所需排序数组大小
       for(i=0;i<n;i++)
       {    printf("请输入数组a[%d]:",i);
              scanf("%d",&A[i]);//依次输入数组A[0]~A[n]
       }
       bubble_sort(n,A);//冒泡排序
       insertion_sort(n,A);//插入排序
       selection_sort(n,A);//选择排序
       quick_sort(n,A);//快速排序
       shell_sort(n,A);//希尔排序
}
 

 
【使用说明】
例如:
**********************内部排序*************************
请输入数组大小(小于100):8
请输入数组a[0]:12
请输入数组a[1]:23
请输入数组a[2]:18
请输入数组a[3]:36
请输入数组a[4]:27
请输入数组a[5]:9
请输入数组a[6]:21
请输入数组a[7]:14
冒泡排序
排序结果:9 12 14 18 21 23 27 36
比较次数:28
移动次数:45

插入排序
排序结果:9 12 14 18 21 23 27 36
比较次数:15
移动次数:29

选择排序
排序结果:9 12 14 18 21 23 27 36
比较次数:28
移动次数:21

快速排序
排序结果:9 12 14 18 21 23 27 36
比较次数:22
移动次数:16

希尔排序
排序结果:9 12 14 18 21 23 27 36
比较次数:16
移动次数:32

【调试分析说明】
这是我们学过几种内部排序方法的综合,并在之前的基础上增加计算排序方法的比较次数和移动次数,在调试过程中,相当于各种方法独立的排序,所以没有遇到太大的问题,值得注意的是对比较次数和移动次数的计算,出现过一些小麻烦,需要细心的调试。
【算法的改进设想】
 这是我们学过几种内部排序方法的综合,所以在编写过程中是各自为战,没有一个整体性,另外,程序统计出比较次数和移动次数,但还没有比较明确的比较结果,这一点需要我们以后继续改进。
【总结】
在6个题目中,这个是我相对有把握的一道题目,可是在编写,调试的过程中虽然没有太大的问题,可是也没有我想象中的简单。排序方法的比较是我们之前学过几种排序方法的整合,给我最大的感受是把这些算法整合起来需要明确的思想和思路,需要整个程序的步调一致。推及到所有程序,都要我们在编程过程中注意程序的一致性。

上一页  [1] [2] [3] 下一页

内部排序演示C++ 第2页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©751com.cn 辣文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。