yuanfensky_1 2013-12-21 08:49
浏览 842

请大神们帮帮忙,程序中折半算法怎么不可以输入,直接跳到最后了

#include "stdafx.h"
#include
#define MIX_SIZE 20
using namespace std;

typedef struct _Data
{
int *elem;
int lengh;
}Data;

void Creat(Data &data)
{
data.elem=(int *)malloc(MIX_SIZE*sizeof(int));
data.lengh=0;
return;
}

int IputData(Data &data)
{

for(int i=0;cin>>data.elem[i]&&i<20;i++)
{  
    data.lengh++;
    if(data.elem[i] == '*')
        break;      
}
return 0;

}

void MaoPaoPaixu(Data &data)
{
int max;
for(int i=0;i {
for(int j=0;j {
if(data.elem[j]>data.elem[j+1])
{
max=data.elem[j];
data.elem[j]=data.elem[j+1];
data.elem[j+1]=max;
}

}
}

for(int k=0;k<data.lengh;k++)
cout<<data.elem[k]<<" ";
return;
}

void TeacherMaoPao(Data &data)
{
int i=0,temp;
int exchange=1;

while(i<data.lengh&&exchange)
{
    for(int j=0;j<data.lengh-i;j++)
    {
        if(data.elem[j]>data.elem[j+1])
        {
            temp=data.elem[j];
            data.elem[j]=data.elem[j+1];
            data.elem[j+1]=temp;
            exchange=1;
        }    
        i++;
    }
}
for(int k=0;k<data.lengh;k++)
    cout<<data.elem[k]<<"  ";

}

void Select_Sort(Data &data)
{
int i,j,k,temp;
for(i=0;i {
k=i;
for(j=i+1;j {
if(data.elem[k] > data.elem[j])
k=j;
}
if(k!=i) //如果没有k 实现,则不用执行
{
temp = data.elem[k];
data.elem[k]=data.elem[i];
data.elem[i]=temp;
}
}
for(i=0; i<data.lengh;i++)
{
cout << data.elem[i] <<" ";
}
}

int Search(Data &data)
{
int e;
cout<<"请输入要查找的数"< cin>>e;

int low=0,high=data.lengh-1;
while(low<=high)
{
    int mid=(low+high)/2;
    if(e==mid)
    {   
        cout<<"该数在此列数内位置是data.elem["<<mid<<"]"<<endl;
        return 0;
    }
    else 
    {   
        if(e<data.elem[mid])
             high=mid-1;
        else
            low=mid+1;      
    }
}
if(low>high)
{
    cout<<"没有您要查该数列找的数"<<endl;
    return 0;
}
return 0;

}

int main(int argc, _TCHAR* argv[])
{
Data data;

Creat(data);

IputData(data);

cout<<"冒泡排序1"<<endl;

MaoPaoPaixu(data);
cout<<endl;

cout<<"冒泡排序2"<<endl;
TeacherMaoPao(data);
cout<<endl;

cout<<"选择排序"<<endl;
Select_Sort(data);
cout<<endl;

cout<<"查找"<<endl;
Search(data);
return 0;

}

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥15 #MATLAB仿真#车辆换道路径规划
    • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
    • ¥15 数据可视化Python
    • ¥15 要给毕业设计添加扫码登录的功能!!有偿
    • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
    • ¥15 微信公众号自制会员卡没有收款渠道啊
    • ¥100 Jenkins自动化部署—悬赏100元
    • ¥15 关于#python#的问题:求帮写python代码
    • ¥20 MATLAB画图图形出现上下震荡的线条
    • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘