博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构-冒泡排序
阅读量:5876 次
发布时间:2019-06-19

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

冒泡排序的方法,就是对于N个排序元素,比较相邻的元素的大小,如果反序就交换位置,直到没有反序的情况为止。

例如:给定数组{9,1,5,8,3,7,4,6, 2}

排列在数组的方式为:下面的数字为数组中的位置。这里我们假设要排列成从小到大。

9

1

5

8

3

7

4

6

2

0              1                2           3               4              5          6              7            8

第一次循环,求0位置的数值。从【8】位置,开始进行两两比较大小,并交换位置,把最小的数移动到左边,如下图:

 

其中每次交换的结果如下:对于第一个位置【0】,我们需要两两比较N-1次(8)。

对于位置【1】处,我们需要比较N-2次(7),对于第二个位置的数值的计算过程和上面类似。

上面的过程不断的重复,直到确定到第【7】个位置的数值。排列第【0】个位置到【7】个位置的中间结果如下:

这样,对于一个N的数组,我们需要比较1+2+….+N-1次,和为N(N-1)/2,所以计算的复杂度为O(N^2). 程序如下:

#include 
struct MyArray{ int value[9]; int length;};void MySwap(MyArray* list, int i, int j){ int temp = list->value[i]; list->value[i] = list->value[j]; list->value[j] = temp;}void printArray(MyArray* list){ for(int i=0;i< list->length;++i) { std::cout << list->value[i]<<" "; } std::cout << std::endl;}void MyBubbleSort(MyArray* list){ int length = list->length; for(int i=0;i<= length-2; ++i) { for(int j= length-1; j>=i+1; --j) { if(list->value[j]
value[j-1]){ MySwap(list,j,j-1); } //printArray(list); } //std::cout << std::endl; //getchar(); printArray(list); }}void main(){ MyArray A; A.length = 9; int X[9] = {
9,1,5,8,3,7,4,6,2}; for(int i=0; i<9;++i) { A.value[i] = X[i]; } printArray(&A); std::cout << std::endl; MyBubbleSort(&A); //printArray(&A);}

转载于:https://www.cnblogs.com/bruce81/archive/2013/03/17/2964536.html

你可能感兴趣的文章
使用Nginx搭建WEB服务器
查看>>
【oracle唯一主键SYS_GUID()】
查看>>
作业2
查看>>
raid技术-研究感受
查看>>
远程主机探测技术FAQ集 - 扫描篇
查看>>
C++中调用python函数
查看>>
Nomad添加acl认证
查看>>
“TI门外汉”网路知识笔记一 OSI参考模型
查看>>
你不需要jQuery(五)
查看>>
DatanodeDescriptor说明
查看>>
ServlertContext
查看>>
eclipse编辑器生命周期事件监听
查看>>
Python WOL/WakeOnLan/网络唤醒数据包发送工具
查看>>
sizeof(long)
查看>>
pxe网络启动和GHOST网克
查看>>
ftp 虚拟用户的使用(安装)
查看>>
2.5-saltstack配置apache
查看>>
http状态响应码大全(复制转帖)
查看>>
django数据库中的时间格式与页面渲染出来的时间格式不一致的处理
查看>>
Python学习笔记
查看>>