跪求双向冒泡排序的程序(C++)

如题 急用 谢谢了

#include <iostream.h>

#define nmbLength 12 //数组大小

void bidirectionalTaxis(int numbers[],int n)
{
bool flag=true; //排序条件
int temp;
int zCount=(n-1),fCount=0;//正反数计数初始化
while(flag)
{
//从反数计数点开始 遍历到n-1,即不遍历已反向排好的
for(int i=fCount;i<zCount;i++) //冒泡法正向遍历找最大值
{
if(numbers[i]>numbers[i+1])//前一个数大于后一个数,则交换
//使得大数冒到后面去
{
temp=numbers[i];
numbers[i]=numbers[i+1];
numbers[i+1]=temp;
}
}

//从最后-1位开始反向遍历到 第一位 ,即不遍历正向已经排好的
for(int j=zCount-1;j>fCount;j--) //反向遍历,找次大值
{
if(numbers[j]>numbers[j-1])//后一个数大于前一个数,则交换
//使得大数冒到前面去
{
temp=numbers[j];
numbers[j]=numbers[j-1];
numbers[j-1]=temp;
}
}
if (zCount-1==fCount||zCount==fCount)//退出条件
{
flag=false;
break;// 跳出循环条件,考虑到数组是奇数还是偶数个数
}
zCount--;//正数自加,即排好了第zCount+1位数(初始是n)
fCount++;//反数自加,即排好了第fCount+1位数(初始是1)
}
}

void main()
{
int a[nmbLength]={2,5,3,4,6,0,9,8,7,1};//要排序数组
cout<<"双向冒泡排序"<<endl<<"排序前: ";
for(int i=0;i<nmbLength;i++) //遍历A
{
cout<<a[i];
}
cout<<endl;
cout<<"排序后: ";
bidirectionalTaxis(a,nmbLength);

for(i=0;i<nmbLength;i++) //遍历A
{
cout<<a[i];
}
cout<<endl;
cout<<"反相输出:";
for(i=nmbLength-1;i>=0;i--) //遍历A
{
cout<<a[i];
}
cout<<endl;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-06-13
void DblPPSort(int L[],int low,int high) {
int i,j,fini = 0;
while (low < high) {
fini = 1;
for (i = low; i<=high; i++)
if (L[i] > L[i+1]) {
L[0] = L[i];
L[i] = L[i+1];
L[i+1] = L[0];
fini = 0;
}
if (fini) break;
high--;
for (i = high; i>=low; i--)
if (L[i] > L[i+1]) {
L[0] = L[i];
L[i] = L[i+1];
L[i+1] = L[0];
fini = 0;
}
if (fini) break;
low++;
}
}
void DblBbbSort(int L[]) {
// 对顺序表L作双向冒泡排序
DblPPSort(L,1,n-1);
}

参考资料:http://zhidao.baidu.com/question/29586998.html?si=2

跪求双向冒泡排序的程序(C++)
int a[nmbLength]={2,5,3,4,6,0,9,8,7,1};\/\/要排序数组 cout<<"双向冒泡排序"<<endl<<"排序前: ";for(int i=0;i<nmbLength;i++) \/\/遍历A { cout<<a[i];} cout<<endl;cout<<"排序后: ";bidirectionalTaxis(a,nmbLength);for(i=0;i<nmbLength;i++) \/\/遍历A { ...

用c语言,两个排序算法,随便来俩就行,3Q
} \/\/结束main()函数 快速排序c++代码 悬赏分:0 | 提问时间:2009-6-1 16:00 | 提问者:杨树好 一个例子来说明一下其算法原理问题补充:救命的!快点啊 推荐答案 随机生成N个整数显示,经过快速排序后输出排序后的结果。程序代码如下所示,仅供参考:(已通过编译运行,正确无误!)include "stdi...

C++ 冒泡排序法
BubbleSort(s,10);cout<<"排序结果:";print(s,10);system("pause");}

想问您一些排序算法的伪代码,谢啦
冒泡排序(bubble sort) — O(n^2)鸡尾酒排序(Cocktail sort,双向的冒泡排序) — O(n^2)插入排序(insertion sort)— O(n^2)桶排序(bucket sort)— O(n); 需要 O(k) 额外空间 计数排序(counting sort) — O(n+k); 需要 O(n+k) 额外空间 合并排序(merge sort)— O(nlog n...

C++: 用bubblesort写个排顺序的程序。
看你这意思吧,print函数是用来打印这个数组的。sortlist函数是用来输入这个数组数值的bubblesort函数是用来冒泡排序的。所以我就按照你的要求给你写了个 #include <iostream> using namespace std;void print(int data[],int n){ cout<<"\\nPrint: ";for (int i=0; i<n; i++){ cout<<data...

C++冒泡排序的基本思想和步骤
冒泡排序的基本概念是:依次比较相邻的两个数,将大数放在前面,小数放在后面。即首先比较第1个和第2个数,将大数放前,小数放后。然后比较第2个数和第3个数,将大数放前,小数放后,如此继续,直至比较最后两个数,将大数放前,小数放后,此时第一趟结束,在最后的数必是所有数中的最小数。重复...

数据结构:编写一个双向冒泡排序算法
解:实现本题功能的算法如下:void dbubblesort(sqlist r,int n){ int i,j,flag;flag=1;i=1;while(flag!=0){ flag=0;for(j=i;j<n-i;j++){ if(r[j]>r[j+1]){ flag=1;r[0]=r[j];r[j]=r[j+1];r[j+1]=r[0];} } for(j=n-i;j>i;j--){ if(r[j]<r[j...

求用c++写一个main函数冒泡排序 输入一个数组 分步骤写出每一步的结果...
int i,j,t,a[10]={20,34,54,33,56,78,91,11,76,49};printf("原来的数组:\\n");for(i=0;i<10;i++)printf("%d ",a[i]);printf("\\n");for(i=0;i<9;i++)for(j=0;j<9-i;j++)if(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;} printf("排序以后的...

用C++语言编写程序实现:设计一个函数模板,实现用冒泡法对10 个某类型...
冒泡排序算法的运作如下:1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。3、针对所有的元素重复以上的步骤,除了最后一个。4、持续每次对越来越少的元素重复上面的步骤,直到...

泡沫排列法
冒泡排序:include <iostream> using namespace std;int main(){ int array[10];int temp;for(int a=0;a<10;a++)\/\/输入数据 { cout<<"请输入第"<<a+1<<"数\\n";cin>>array[a];} for(int i=0;i<9;i++)for(int j=0;j<9;j++)\/\/排序,从小到大 if(array[j]>array[j+1]...

相似回答
大家正在搜