jasonh920
|
分享:
▼
x0
|
[C/C++] [求助]学校的作业写不出来,关于泡沫排序法和二分搜寻法的程式
请问各位大大帮一下小弟. 这次作业想破了头,就是不知道如何下手. 眼睁睁看着交作业的时间又要到了. 所以想请各位大大帮忙小弟,要不然真不知道 这个程式要如何作压.... 麻烦各位大大们了.... 一. 自订一个数列(阵列)使用泡沫排序法进行排序动作 二. 将第一点排序完成的数列使用二分搜寻法进行搜寻动作 三. 一、二点功能需加入状态追踪 四. 将一、二点写成函式的形态 五 .执行范例如 图二、三、四、五 函式格式与说明 void print(int array[] , int length); //自订列印阵列函数 void bubble_sort(int bubble[] , int length , int control); //泡沫排序 int binary_search(int binary[] ,int length , int search , int low_limit ,int up_limit , int control); //二分搜寻法 参数说明 int array[] 欲列印阵列 ; int lenght 欲列印阵列长度 int bubble[] 欲排序阵列 ; int lenght 欲排序阵列长度 ; int control 追踪控制变数 int binary[] 欲搜寻阵列 ; int lenght 欲搜寻阵列长度 ; int search 欲搜寻的数值 ; int up_limit 二分法搜寻初始上限 ; int low_limit 二分法搜寻初始下限 ; int control 追踪控制变数 #include <cstdlib> #include <iostre .. 访客只能看到部份内容,免费 加入会员 或由脸书 Google 可以看到全部内容
|
|
x0
[楼 主]
From:局域网对方和您在同一内部网
| Posted:2005-03-25 13:44 |
|
|
唐老鸭
|
分享:
▲
▼
下面是引用jasonh920于2005-03-25 13:44发表的 [求助]学校的作业写不出来,关于泡沫排序法和二分搜寻法的程式: 请问各位大大帮一下小弟. 这次作业想破了头,就是不知道如何下手. 眼睁睁看着交作业的时间又要到了. 所以想请各位大大帮忙小弟,要不然真不知道 这个程式要如何作压.... ....... 看来你不是很听的懂我的意思..... 首先.... 我的第一个问题是 int value[size]={57,19,33,26,6};你是要用给好的这五个数来排就好....还是要由使用者来输入一些数字....之后再将这些数做排列.... 第二....你宣告 int array[size];是要拿来做什么用的..... 第三....你的题目 "三. 一、二点功能需加入状态追踪"你所要做的是什么.....不是很懂她的意思....是说要将每一次的排序(譬如排了十次才排好)...分别列他的进度做到哪吗..... 最后一点.....照你的程式....如果你的输入是A....就做bubble_sort(normal)...如果是B....就做bubble_sort(detail)....我不知道他的差别在哪....因为我就只知道一种bubble sort的演算法....不知道bubble sort还有分你要用normal的排列....还是detail的排列....不然你的程式里....你的"control"我可能用不到....所以选A跟选B都是一样的....当然binary_serach也是同样的问题....这才是我想问你的.....
[ 此文章被唐老鸭在2005-03-26 03:56重新编辑 ]
|
|
唐老鸭
|
分享:
▲
▼
下面是引用jasonh920于2005-03-26 01:15发表的 : "//程式码"的部份是老师要我们填进自己程式的部份. 或者是"完成的方式不限制 (除了互抄) 不一定要用我的 主程式,但函式定义一定要一样(函数名称)"就可以了.
但我却是想了好几天都猜不透要如何去解. 麻烦大大您了... 其实我是觉得真的很难啦!!因为我逻辑观念实 在是不怎么好... 而且现在又是随修,根本就没有同学可以讨论. 老师又扬言要当至少二十个以上... 真是快哭出来了..... 如果说上面的主程式是你写的.... 那我会改掉大部分的部份.... 用我自己的想法来写.... 但如果那是老师的版本.... 那上面那篇留言.... 有蛮多问题要问你的.... 所以你先告知你真正的题目要求.... 我在来给你内容..... 基本上那两个函式的部份不会超过二十行..... 不过作业还是要自己写比较好.... 有学到才重要 .....
|
|
唐老鸭
|
分享:
▲
▼
我照你们老师的要求写好了....只有一点点改变而已....剩下完全是照你们老师的图做的..... 这是程式码...... 复制程式
#include <cstdlib>
#include <iostream>
using namespace std;
void print(int array[] , int length);//自订列印阵列函数
void bubble_sort(int bubble[] ,int length , int control); //泡沫排序
int binary_search(int binary[] , int length , int search , int low_limit ,int up_limit , int control);//二分搜寻法
int main(int argc, char *argv[])
{
const int size = 5;//自订长度
int value[size]={57,19,33,26,6}; //自订数列
//int array[size]; //我没用到这个
int i=0 , j=0;
int find_value=0;
int select=0;
char determine;
printf("Select mode : a.bubble_sort(normal) B.bubble_sort(detail) C.Binary_search(normal) D.Binary_search(detail)\n");
scanf("%c",&determine);
if(determine == 'A' || determine == 'a')
{
select= 0;
printf("array value : ");
print (value,size);
bubble_sort(value,size,select);
}
else if(determine== 'B' || determine == 'b')
{
select=1;
printf("array value : ");
print(value,size);
bubble_sort(value,size,select);
}
else if(determine == 'C' || determine == 'c')
{
select=0;
printf("array value : ");
print(value,size);
printf("enter search value :\n");
scanf("%d",&find_value);
bubble_sort(value,size,select);
binary_search(value ,size ,find_value ,0 ,size-1 ,select);
}
else if (determine == 'D' || determine == 'd')
{
select=1;
printf("array value : ");
print(value,size);
printf("enter search value :\n");
scanf("%d",&find_value);
bubble_sort(value,size,select);
binary_search(value ,size , find_value ,0 ,size-1 ,select);
}
system("PAUSE");
return 0;
}
void bubble_sort(int bubble[] , int length , int control)
{
int i,j;
int temp;
for(i=0; i<length-1; i++)
{
for(j=i+1; j < length; j++)
{
if(control==1)
{
printf("%3d%3d\n",i,j);
printf("%3d%3d\n",bubble[i],bubble[j]);
printf("array value : ");
print(bubble,length);
}
if(bubble[i]>bubble[j])
{
if(control==1)
{
printf("%3d%3d exchange\n",bubble[i],bubble[j]);
}
temp=bubble[j];
bubble[j]=bubble[i];
bubble[i]=temp;
if(control==1)
{
printf("array value : ");
print(bubble,length);
}
}
}
}
if(control==0)
{
printf("array value : ");
print(bubble,length);
}
}
int binary_search(int binary[] ,int length ,int search , int low_limit , int up_limit , int control)
{
int middle;
int find=0;
while(low_limit<=up_limit)
{
middle=(low_limit+up_limit)/2;
if(control==1)
{
printf("\nup_limit = %d\n",binary[up_limit]);
printf("low_limit = %d\n",binary[low_limit]);
printf("midpoint = %d\n",binary[middle]);
printf("search = %d\n",search);
printf("\n");
}
if(search>binary[middle])
low_limit=middle+1;
else if(search<binary[middle])
up_limit=middle-1;
else if(search==binary[middle])
{
find=1;
break;
}
}
if(find==1)
printf("Find %d\n",search);
else
printf("No Find %d\n",search);
return find;
}
void print(int array[] , int length)
{
int i=0;
for(i=0 ; i<length ; i++)
{
printf("%3d",array[i]);
}
printf("\n");
}
|
|
|