关于冒泡排序的问题!!
#include<iostream.h>
void Bubblesort(int data[],int n)
{
int i,j,tag;
for(i=1,tag=1;tag==1&&i<n;i++)
{
tag=0;
for(j=1;j<n-i;j++)
if(data[j]>data[j+1]){
data[0]=data[j];data[j]=data[j+1];data[j+1]=data[0];
tag=1;
}
}
}
int main()
{int i;
int data[9]={34,23,12,45,26,15,19,29};
Bubblesort(data,9);
for(i=0;i<9;i++)
cout<<data[i]<<" ";
cout<<endl;
return 0;
}
这是冒泡排序~~ 为什么第一数无法参加排序·~ 请指教·~
[解决办法]
#include <iostream.h> void Bubblesort(int data[],int n) { int i,j,tag; for(i=1,tag=1;tag==1&&i <n;i++) { tag=0; for(j=0;j < n-i;j++) if(data[j]>data[j+1]){ int temp=data[j]; data[j]=data[j+1]; data[j+1]=temp; tag=1; } } } int main() { int i; int data[9]={0,34,23,12,45,26,15,19,29}; Bubblesort(data,9); for(i=0;i <9;i++) cout << data[i] <<" "; cout << endl; return 0; }
[解决办法]
for(j=0;j < n-i;j++)//j=0开始
[解决办法]
#include <iostream>
using namespace std;
void Bubblesort(int data[],int n)
{
int i,j,tag;
for(i=1;i <n;i++)
{
for(j=0;j <n-i;j++)
if(data[j]>data[j+1])
{
int a;
a=data[j];
data[j]=data[j+1];
data[j+1]=a;
}
}
}
int main()
{int i;
int data[9]={34,23,12,45,26,15,19,29};
Bubblesort(data,9);
for(i=0;i <9;i++)
cout <<data[i] <<" ";
cout <<endl;
system("pause");
return 0;
}
你把data[0]没处理还把这个位置当中间值用.