冒泡排序
#include<iostream>
using namespace std;
void swap(int a[],int i,int j)
{
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
void BubbleSort(int r[],int n)
{
for(int i=0;i<n;i++)
{
for(int j=n-1;j>i;j--)
{
if(r[j-1]>r[j])
{
swap(r,j-1,j);
}
}
}
}
int main()
{
int a[6]={6,2,4,3,1,5};
cout<<"输出未排序序列:";
for(int i=0;i<6;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
BubbleSort(a,6);
cout<<"输出冒泡排序后的序列:";
for(int i=0;i<6;i++)
{
cout<<a[i]<<" ";
}
return 0;
}
双向冒泡排序
#include<iostream>
using namespace std;
void swap(int array[], int i, int j)
{
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
void BiBubble(int r[],int n)
{
int flag=1;int i=0;//flag=1有交换记录,flag=0无交换记录
while(flag==1)
{
flag=0;
for(int j=n-i-1;j>i;j--)
{
if(r[j-1]>r[j])
{
flag=1;
swap(r[j-1],r[j]);
/* int tmp = r[j];
r[j] = r[j-1];
r[j-1] = tmp;*/
}
}
for(int j=i+1;j<n-i-1;j++)
{
if(r[j]>r[j+1])
{
flag=1;
swap(r[j],r[j+1]);
/*int tmp = r[j];
r[j] = r[j+1];
r[j+1] = tmp;*/
}
}
i++;
}
}
int main()
{
int a[6];
cout<<"输入数组元素:";
for(int i=0;i<6;i++)
{
cin>>a[i];
}
BiBubble(a,6);
cout<<endl;
cout<<"输出执行排序后的元素:";
for(int i=0;i<6;i++)
{
cout<<a[i]<<" ";
}
return 0;
}