冒泡排序
一、算法思想:
每一趟排序,两两相邻元素比较;
且每趟排序都会得出本趟排序的最值。
二、典例
1、一维数组(int)的冒泡排序
#include<stdio.h>
//冒泡排序(趟数从0开始)
//循环的趟数: 数组长度-1
//每一趟比较的次数:数组长度-趟数-1
void BubbleSort(int *a,int length)
{
int i,j,temp;
for(i=0;i<length-1;i++)
{
for(j=0;j<length-i-1;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
int main()
{
int i;
int a[]={8,5,9,1,7,4,5,78,56,2};
BubbleSort(a,10);
for(i=0;i<10;i++)
printf("%d\t",a[i]);
}
2、一维字符数组(char)的冒泡排序
#include<iostream>
using namespace std;
//冒泡排序(趟数从0开始)
//循环的趟数: 数组长度-1
//每一趟比较的次数:数组长度-趟数-1
void BubbleSort(char *q,int length)
{
for(int i=0;i<length-1;i++)//总趟数=length-1
{
for(int j=0;j<length-i-1;j++)//总比较次数=length-i-1
{
if(q[j]>q[j+1])
{
char temp;
temp=q[j];
q[j]=q[j+1];
q[j+1]=temp;
}
}
}
}
int main()
{
int i;
char p[]={'E','T','C','B','Q','A'};
BubbleSort(p,6);
for(i=0;i<6;i++)
{
cout<<p[i]<<"\t";
}
return 0;
}
3.字符串的冒泡排序
#include<iostream>
using namespace std;
//冒泡排序(趟数从0开始)
//循环的趟数: 数组长度-1
//每一趟比较的次数:数组长度-趟数-1
void BubbleSort(char **q,int length)
{
for(int i=0;i<length-1;i++)//总趟数=length-1
{
for(int j=0;j<length-i-1;j++)//总比较次数=length-i-1
{
if(strcmp(q[j],q[j+1])>0)
{
char *temp;
temp=q[j];
q[j]=q[j+1];
q[j+1]=temp;
}
}
}
}
int main()
{
int i;
char *p[]={"Welcome","To","Suqian","And","Nanjing"};
BubbleSort(p,5);
for(i=0;i<5;i++)
{
cout<<p[i]<<"\t\t";
}
return 0;
}