| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 428 人关注过本帖, 1 人收藏
标题:求解冒泡排序中遇到的问题
只看楼主 加入收藏
编程2011
Rank: 2
来 自:湖南
等 级:论坛游民
帖 子:73
专家分:19
注 册:2011-3-3
结帖率:92%
收藏(1)
已结贴  问题点数:4 回复次数:5 
求解冒泡排序中遇到的问题
程序代码:
#include<iostream>
#include<iomanip>
using namespace std;
void B(int  r[],int );
#include<ctime>
#include<cstdlib>
int main()
{
       const int M=100000;
    int size;
    int A[M];
     srand(time(0));
    for(int y=1;y<M;y++)
    {  
       A[y]=1+rand()%100000;
    }
    cout<<"请输入要排序的范围数:";
    cin>>size;
    cout<<endl;
     time_t first,end;
     first=clock();
    B(A,size);
    end=clock();
    cout<<"所需的时间为: "<<double(end-first);

 return 0;
}
void B(int r[], int n)
{
    int temp;
    int exchange;
    int bound;
    exchange=n-1;                       //第一趟起泡排序的范围是r[0]到r[n-1]   
    while (exchange)                    //仅当上一趟排序有记录交换才进行本趟排序
    {
        bound=exchange;
        exchange=0; 
        for (int j=0; j<bound; j++)     //一趟起泡排序
        if (r[j]>r[j+1])
        {
          temp=r[j];
          r[j]=r[j+1];
          r[j+1]=temp;
          exchange=j;                   //记录每一次发生记录交换的位置
       }
    }
    for(int i=0;i<n;i++)
       cout<<r[i]<<setw(6);

}
假如你对随机产生的随机数进行排序,第一个数都是-858993460 其余的排序没错。为什么出现这种情况,请大家帮忙看看代码解释一下,谢谢了
2011-05-17 23:26
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:3 
  for(int y=1;y<M;y++)
2011-05-17 23:56
编程2011
Rank: 2
来 自:湖南
等 级:论坛游民
帖 子:73
专家分:19
注 册:2011-3-3
收藏
得分:0 
回复 2楼 寒风中的细雨
这程序有问题?
2011-05-18 00:07
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
下标值》》》》 零
2011-05-18 00:11
编程2011
Rank: 2
来 自:湖南
等 级:论坛游民
帖 子:73
专家分:19
注 册:2011-3-3
收藏
得分:0 
回复 4楼 寒风中的细雨
非常感谢。对了
2011-05-18 00:15
幸福的起点
Rank: 1
等 级:新手上路
帖 子:1
专家分:1
注 册:2011-5-18
收藏
得分:1 
回复 楼主 编程2011
我昨天也遇到这个问,这个是数组越界,也就是说你的下标达不到。给你一段参考代码
// bubble_sort.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
void bubble_sort(int a[],int n)
{
    int j,temp=0,m;
    while(temp<n)
        {
            for(j=0;j<n-temp-1;j++)
            {
                if(a[j]>a[j+1])
                {
                    m=a[j];
                    a[j]=a[j+1];
                    a[j+1]=m;
                }
            }
            temp++;
        }
    cout<<"sorted is:";
    for(int j=0;j<n;j++)
        cout<<a[j]<<"  ";
}
void main()
{
    int b[100],n;
    cout<<"please input the number of item:";
    cin>>n;
    for(int i=0;i<n;i++)
        {
            cout<<"please input  the"<<"  "<<i+1<<"  "<<"number:";
            cin>>b[i];
        }
    bubble_sort(b,n);
}

2011-05-18 09:40
快速回复:求解冒泡排序中遇到的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015815 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved