开始学数据结构——(二):冒泡排序
来源:互联网 发布:鸿威软件 编辑:程序博客网 时间:2024/05/21 07:43
/*冒泡排序 : 对于每次遍历,发现前后的大于后面的,则马上交换位置。
则第一轮可以找到最大的放在最后,然后依次往前面填满。
SQ——2014 04 14
*/
#include<stdio.h>
void swap(int * aa , int * bb);
void bubble(int cc[] ,int n);
int main()
{
int aa =10;
int bb= 5;
printf("aa=%d bb= %d" ,aa,bb);
swap(&aa ,&bb);
printf("aa=%d bb= %d" ,aa,bb);
//--------------test _2!--------------------
int cc[10] ={10,8,9,7,6,4,5,3,2,1};
int i;
for (i =0; i< (sizeof(cc)/sizeof(cc[0])); i++)
printf(" %d \n" ,cc[i]);
bubble(cc ,10);
printf("after bubble!\n");
for (i =0; i< (sizeof(cc)/sizeof(cc[0])); i++)
printf(" %d \n" ,cc[i]);
return 0;
}
void bubble( int a[] ,int n){
int i,j,key;
int t;
int flag ;
for (i=n; i >0; i--) { //因为冒泡每次都是冒出最大值放在最后,所以应该是每次减少的是最后一个值的位置
flag =0; //标志一次比较中有没有需要冒泡比较的,要是没有,则不变;
for(j = 0 ; j < i-1 ;j++) {
if (a[j] > a[j+1]) { //如果前面的>后面的。
flag = 1;
swap(&a[j] ,&a[j+1]);
}
}
if( flag == 0) //若不存在交换的情况,则证明已经是排好的了。
break;
}
}
void swap(int * aa , int * bb){
//传递过来的是指针,所以你对指针进行改动是没有意义的。
int tmp;
tmp = *aa;
*aa = *bb;
*bb = tmp;
则第一轮可以找到最大的放在最后,然后依次往前面填满。
SQ——2014 04 14
*/
#include<stdio.h>
void swap(int * aa , int * bb);
void bubble(int cc[] ,int n);
int main()
{
int aa =10;
int bb= 5;
printf("aa=%d bb= %d" ,aa,bb);
swap(&aa ,&bb);
printf("aa=%d bb= %d" ,aa,bb);
//--------------test _2!--------------------
int cc[10] ={10,8,9,7,6,4,5,3,2,1};
int i;
for (i =0; i< (sizeof(cc)/sizeof(cc[0])); i++)
printf(" %d \n" ,cc[i]);
bubble(cc ,10);
printf("after bubble!\n");
for (i =0; i< (sizeof(cc)/sizeof(cc[0])); i++)
printf(" %d \n" ,cc[i]);
return 0;
}
void bubble( int a[] ,int n){
int i,j,key;
int t;
int flag ;
for (i=n; i >0; i--) { //因为冒泡每次都是冒出最大值放在最后,所以应该是每次减少的是最后一个值的位置
flag =0; //标志一次比较中有没有需要冒泡比较的,要是没有,则不变;
for(j = 0 ; j < i-1 ;j++) {
if (a[j] > a[j+1]) { //如果前面的>后面的。
flag = 1;
swap(&a[j] ,&a[j+1]);
}
}
if( flag == 0) //若不存在交换的情况,则证明已经是排好的了。
break;
}
}
void swap(int * aa , int * bb){
//传递过来的是指针,所以你对指针进行改动是没有意义的。
int tmp;
tmp = *aa;
*aa = *bb;
*bb = tmp;
}
顺便在最后分析下时间复杂度: 可以看出最外层需要n次遍历,然后内部每次都需要n次交换,则时间复杂度为O(n2);
空间复杂度的话,因为只需要一个空间提供数值交换,则为O(1);
稳定性的话:是稳定的。比如 6 6 4 2 。其实首先放在最后的就是第二个6 ,然后第二个6放在倒数第二位;
0 0
- 开始学数据结构——(二):冒泡排序
- 开始学数据结构——(二):冒泡排序
- 复习数据结构:排序算法(二)——冒泡排序
- 数据结构之排序(二)—— 冒泡排序
- 开始学数据结构——(一):选择排序
- 开始学数据结构——(三):插入排序
- 开始学数据结构——(一):选择排序
- 开始学数据结构——(三):插入排序
- 开始学数据结构——(四):归并排序
- 开始学数据结构——(六):希尔排序
- 开始学数据结构——(六):快速排序
- 数据结构——冒泡排序
- 冒泡排序——数据结构
- 【数据结构】单链表—冒泡排序
- 从零开始_学_数据结构(六)——排序(冒泡、插入、希尔、简单选择、归并、快速)
- 数据结构【排序算法】——冒泡排序
- 数据结构之排序算法(二)-冒泡排序及改进
- 【从头开始学算法】选择排序 插入排序 冒泡排序
- 公有云与私有云对比分析报告
- Linux目录结构及常用命令大全
- MyEclipse 中tomcat无法调试的问题
- 开始学数据结构——(一):选择排序
- Hbase分析报告
- 开始学数据结构——(二):冒泡排序
- 表单禁止回车提交
- 使用CryptoAPI计算HASH和HMAC
- vim 命令详解
- 设计模式之——单例模式(Singleton)的常见应用场景
- MSMQ-发送消息到远程专用队列path格式
- 十大教养,让你气度非凡!
- 开始学数据结构——(三):插入排序
- android CTS Test