博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
冒泡排序
阅读量:4116 次
发布时间:2019-05-25

本文共 1821 字,大约阅读时间需要 6 分钟。

冒泡排序:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。

即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。

1.数组方式的冒泡排序:(如果是有序的[flag=0],就直接跳出循环,进行下一个数字排序)

//数组方式:#include
#include
#include
void bubble(int *arr, int size){ assert(arr); assert(size > 0); int i = 0; int j = 0; int flag = 0; //第一个与后面的一次比较,如果大于后面的数,则交换位置;然后把后面的数依次比较,直到第size-2个; for (i = 0; i < size - 1; i++) { for (j = 0; j < size - 1 - i; j++) { flag = 1; if (arr[j]>arr[j + 1]) { arr[j] ^= arr[j + 1]; arr[j + 1] ^= arr[j]; arr[j] ^= arr[j + 1]; } } if (0 == flag) { break; } }}void print(int *arr, int size){ int i = 0; for (i = 0; i < size; i++) { printf("%d ", arr[i]); }}int main(){ int arr[] = { 12, 24, 45, 53, 67, 64, 86, 78, 95, 73 }; int size = sizeof(arr) / sizeof(arr[0]); printf("排序前: "); print(arr, size); printf("\n"); bubble(arr, size); printf("排序后: "); print(arr, size); system("pause"); return 0;}

2.指针方式:

//指针方式:#include 
#include
#include
void print(int *arr, int size){ int i = 0; for (i = 0; i < size; i++) { printf("%d ", arr[i]); }}void bubble(int *arr, int size){ assert(arr); assert(size > 0); int i = 0; int flag = 0; int *start = arr; int *end = arr + size - 1; while (end>arr)//至少有两个数比较; { for (start = arr; start < end; start++) { if ((*start)>*(start + 1)) { flag = 1; *start ^= *(start + 1); *(start + 1) ^= *start; *start ^= *(start + 1); } } if (0 == flag) { break; } end--; }}int main(){ int arr[] = { 12, 24, 45, 53, 67, 64, 86, 78, 95, 73 }; int size = sizeof(arr) / sizeof(arr[0]); printf("排序前: "); print(arr, size); printf("\n"); bubble(arr, size); //int ret=bubble(arr, size); //printf("%d\n", ret); printf("排序后: "); print(arr, size); system("pause"); return 0;}

运行后的结果是:


你可能感兴趣的文章
【JavaScript 教程】面向对象编程——实例对象与 new 命令
查看>>
我在网易做了6年前端,想给求职者4条建议
查看>>
SQL1015N The database is in an inconsistent state. SQLSTATE=55025
查看>>
RQP-DEF-0177
查看>>
Linux查看mac地址
查看>>
Linux修改ip
查看>>
SQL1032N No start database manager command was issued. SQLSTATE=57019
查看>>
Java两个内存参数选项
查看>>
情商5技能
查看>>
用spring做框架,实现通用数据库倒表工具
查看>>
CMMI特定目标(SG)和特定实践(SP)汇总
查看>>
CMMI公共目标(GG)和公共实践(GP)汇总
查看>>
无责任比较thrift vs protocol buffers
查看>>
ajax进度条
查看>>
软件开发组的团队精神 (一个程序员在IBM的开发经验)
查看>>
35岁前成功的12条黄金法则[zt]
查看>>
获取硬件信息
查看>>
程序员的五种类型
查看>>
中兴Android面试题
查看>>
java逐行读取和写入文本文件txt
查看>>