冒泡排序算法详解
一、算法的设计思想:就是将第一个记录的关键字和第二个记录的关键字进行比较,如果后面的比前面的小则交换,然后比较第二个和第三个,依次类推。比完一趟,最大的那个已经放到了最后的位置,这样就可以对前面N-1个数再循环比较
二、算法的原理演示举例
假设有个待排序数组
$arr=array(10,2,34,5,12,8,43);
从以上分析看出
(1)对于i个数需要进行i-1趟比较(这里i=7)
(2)每趟比较完后,在进入下趟比较时,将减少一个数参与比较
(3)对于n个数来说,需要比较n-1次才能形成第1趟的结果,同理需要比较第2同样需要比较n--1次才能形成第2趟比较的结果,只不过第2趟少1个数参与比较
对于上述例子下图是每趟比较过程的图解:
综上所述:在实现的时候需要解决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函数式等目前主流计算机语言。
根据读者的需要有和人工智能相关的计算机科学与技术、电子技术、芯片技术等基础学科通俗易懂的文章。