冒泡排序算法详解

一、算法的设计思想:就是将第一个记录的关键字和第二个记录的关键字进行比较,如果后面的比前面的小则交换,然后比较第二个和第三个,依次类推。比完一趟,最大的那个已经放到了最后的位置,这样就可以对前面N-1个数再循环比较

二、算法的原理演示举例

假设有个待排序数组

$arr=array(10,2,34,5,12,8,43);

java冒泡排序算法(使用Java数组实现冒泡排序法)(1)

从以上分析看出

(1)对于i个数需要进行i-1趟比较(这里i=7)

(2)每趟比较完后,在进入下趟比较时,将减少一个数参与比较

(3)对于n个数来说,需要比较n-1次才能形成第1趟的结果,同理需要比较第2同样需要比较n--1次才能形成第2趟比较的结果,只不过第2趟少1个数参与比较

对于上述例子下图是每趟比较过程的图解:

java冒泡排序算法(使用Java数组实现冒泡排序法)(2)

综上所述:在实现的时候需要解决3个问题

1、比较的趟数

2、每趟比较的次数

3、每次比较后如果前者大要进行数据交换

那么如何将上述处理用计算机来描述呢?中的来说分2大步骤

(1)比较的趟数

for(int i=0;i<arr.length-1;i++)//对于arr.length个数来说{ 比较arr.length-1趟

//每趟比较的详情

}

(2)每趟比较的时候所作的具体工作

【1】需要确定每趟比较的次数

相应伪代码如下:

· for (int j = 0; j < arr.length - 1 - i; j++) //每趟共比较arr.length - 1 - i

· { //次

· //具体的比较详情

· }

【2】比较的详情:如果前者大于后者则交换

if (arr[j] > arr[j + 1])

{

tmp= arr[j];

arr[j] = arr[j + 1];

arr[j + 1] = tmp;

}

Java参考代码:

int[] arr = {3,2,5,8,6,9};

for (int i = 0; i < arr.length-1; i++)

{

for (int j = 0; j < arr.length - 1 - i; j++)

{

if (arr[j] > arr[j + 1])

{ // 如果后一个数小于前一个数交换

tmp= arr[j];

arr[j] = arr[j + 1];

arr[j + 1] = tmp;

}

}

}


《大数据和人工智能交流》的宗旨

1、将大数据和人工智能的专业数学:概率数理统计、线性代数、决策论、优化论、博弈论等数学模型变得通俗易懂。

2、将大数据和人工智能的专业涉及到的数据结构和算法:分类、聚类 、回归算法、概率等算法变得通俗易懂。

3、最新的高科技动态:数据采集方面的智能传感器技术;医疗大数据智能决策分析;物联网智慧城市等等。

根据初学者需要会有C语言、Java语言、Python语言、Scala函数式等目前主流计算机语言。

根据读者的需要有和人工智能相关的计算机科学与技术、电子技术、芯片技术等基础学科通俗易懂的文章。