冒泡排序

来源:互联网 发布:淘宝小二介入处理时间 编辑:程序博客网 时间:2024/06/05 21:00

1. 冒泡排序的概述(从小到大依次排序):

从上到下依次比较两个相邻的泡泡,如果小的在上,大的在下,则不动,如果打的在上,小的在下,就把这两个泡泡的顺序换一下,接着往下走,直到底部。这样就完成一趟排序。完成一趟排序,最大的泡泡一定在最下面。接下来的排序,只要对N - 1个数据进行排序。

2. 性能:

1) 最好情况:顺序 T = O(N)

2) 最坏情况:逆序 T = O(N2)

3) 是稳定的。

4) 如果ElementType A[]放在单向链表里面,因为冒泡排序是从上依次往下扫描,交换相邻的两个元素。因此它是可以用于单向链表排序。但是其他排序算法就不能。

3. 代码:

void BubbleSort(ElementType A[], int N){/*冒泡排序*/int i, j;bool flag;ElementType temp;for(i = N - 1; i >= 0; i--){flag = 0;/*标记该次循环中是否发生交换,若无,则说明整个序列有序*/for(j = 0; j < i; j++){/*每次循环找出一个最大元素,被交换到最右端*/if(A[j] > A[j + 1]){temp = A[j];A[j] = A[j + 1];A[j + 1] = temp;flag = 1;/*若发生交换,则标记*/}}if(!flag) break;/*若没发生交换,则跳出循环*/}}



1 0
原创粉丝点击