链接1:
邻居好说话:冒泡排序 【啊哈!算法】
冒泡排序的核心部分是一个双重嵌套循环。时间复杂度为: O(N2) O ( N 2 ) 。 N N <script type="math/tex" id="MathJax-Element-2">N</script> 为待排序的元素个数。
以下是自己的代码:
//#include <stdio.h>
#include <iostream>
using namespace std;
//输出数组中的内容
void Print(int *p,int num)
{
for (int i=0;i<num;i++)
{
cout<<p[i]<<" ";
}
cout<<endl;
}
//冒泡排序核心部分
void BubbleSort(int *p,int num)
{
int i,j,temp;
for(i=0;i<num;i++)
{
for(j=0;j<num-i;j++)
{
if(p[j]<p[j+1])
{
temp=p[j];
p[j]=p[j+1];
p[j+1]=temp;
}
}
}
}
//主函数
int main()
{
int Score[]={5,3,5,2,8};
cout<<"排序前:"<<endl;
int num=sizeof(Score)/sizeof(int);
Print(Score,num);
BubbleSort(Score,num);
cout<<"排序后:"<<endl;
Print(Score,num);
getchar();getchar(); //这里的getchar();用来暂停程序,以便查看程序输出的内容
//也可以用system("pause");等来代替
return 0;
}
程序运行结果为:
排序前:
5 3 5 2 8
排序后:
8 5 5 3 2
代码2:
//#include <stdio.h>
#include <iostream>
using namespace std;
struct Student_t
{
char name[21];
int stu_score;
};
//输出数组中的内容
void Print(Student_t *p,int num)
{
for (int i=0;i<num;i++)
{
cout<<p[i].name<<":"<<p[i].stu_score<<endl;
}
cout<<"************"<<endl;
}
//冒泡排序
void BubbleSort(Student_t *p,int num)
{
int i,j;
Student_t temp;
for(i=0;i<num;i++)
{
for(j=0;j<num-i;j++)
{
if(p[j].stu_score<p[j+1].stu_score)
{
temp=p[j];
p[j]=p[j+1];
p[j+1]=temp;
}
}
}
}
//主函数
int main()
{
//结构数组
Student_t Mystu[5]=
{
{"name1",5},
{"name2",3},
{"name3",5},
{"name4",2},
{"name5",8}
};
cout<<"排序前:"<<endl;
int num=sizeof(Mystu)/sizeof(Student_t);
Print(Mystu,num);
BubbleSort(Mystu,num);
cout<<"排序后:"<<endl;
Print(Mystu,num);
getchar();getchar(); //这里的getchar();用来暂停程序,以便查看程序输出的内容
//也可以用system("pause");等来代替
return 0;
}
代码运行结果为:
排序前:
name1:5
name2:3
name3:5
name4:2
name5:8
************
排序后:
name5:8
name1:5
name3:5
name2:3
name4:2
************
请按任意键继续. . .
************