【实训4-7】实例详解(三):擂台排序法
(总分11)


 【实训目的】实例详解(三):擂台排序法   

【第 1 步】实训内容介绍

实训内容介绍
擂台排序法
实训结束

【Jitor 校验第 1 步】我已阅读实训内容介绍 // 送分题。直接点击。

 

 

【第 2 步】擂台排序法

 1、本实训使用项目 cpp4 中的 cpp4code.cpp 源代码文件,如果不存在,则先创建项目,然后创建源代码文件。
 2、将下述代码复制到 cpp4code 中:

#include <iostream.h>
#define N 5

// 擂台法排序
void main(void) {
         int a[N];

         cout << "擂台法:输入 " << N << " 个整数: ";  // 输入 N 个整数
         for (int i = 0; i < N; i++) {
                  cin >> a[i];
         }
// 在这里补写代码

         cout << "\n排序结果:" << endl;
         for (i = 0; i < N; i++) {
                  cout << '{' << a[i] << "}\t";
         }
         cout << endl;
}

 补写代码,功能是采用擂台排序法,实现对数组的排序,并要求输出中间数据,代码见教程 79 页【例4-7】,运行结果如下:

擂台法:输入 5 个整数: 7 2 6 5 3

轮次:{0}
与下标 {1} 的比较
与下标 {2} 的比较
与下标 {3} 的比较
与下标 {4} 的比较       {2}     {7}     {6}     {5}     {3}
轮次:{1}
与下标 {2} 的比较
与下标 {3} 的比较
与下标 {4} 的比较       {2}     {3}     {6}     {5}     {7}
轮次:{2}
与下标 {3} 的比较
与下标 {4} 的比较       {2}     {3}     {5}     {6}     {7}
轮次:{3}
与下标 {4} 的比较       {2}     {3}     {5}     {6}     {7}
排序结果:
{2}     {3}     {5}     {6}     {7}
Press any key to continue

代码如下:
// 从下一行开始复制。
#include <iostream.h>
#define N 5

// 擂台法排序
void main(void) {
         int a[N];

         cout << "擂台法:输入 " << N << " 个整数: ";  // 输入 N 个整数
         for (int i = 0; i < N; i++) {
                  cin >> a[i];
         }
// 在这里补写代码
        
         for(i=0; i<N-1; i++){
                  cout << "\n 轮次:{" << i << "}";
                  int m=i;
                  for(int j=i+1; j<N; j++){
                           cout << "\n 与下标 {" << j << "} 的比较\t";
                           if(a[m]>a[j]){
                                    m = j;
                           }
                  }                        
                  if(m>i){
                           int tmp = a[i];
                           a[i] = a[m];
                           a[m] = tmp;
                  }

                  for(int k=0; k<N; k++){
                           cout << "{" << a[k] << "}\t";
                  }      
         }
        
         cout << "\n排序结果:" << endl;
         for (i = 0; i < N; i++) {
                  cout << '{' << a[i] << "}\t";
         }
         cout << endl;
}
// 一直复制到上一行结束。

【Jitor 校验第 2 步】 // 复制上面的代码到VC++ 6.0,保存并运行。点击。

 

 

【第 3 步】实训总结

 本实训通过编写程序,以及对中间结果的观察,理解擂台排序法。 

【Jitor 校验第 3 步】我已阅读实训总结 // 送分题。直接点击。

 

仍有疑问 ? 联系QQ 9429444(陈海云) : 返回首页