1)比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3)针对所有的元素重复以上的步骤,除了最后一个。
4)持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
2.说明
冒泡排序是原地排序的过程,即不需要额外的内存空间,时间复杂度为O(N^2),且是稳定的排序。
3.实现
点击(此处)折叠或打开
- void bubbleSort(int *pData, int num)
- {
- int i, j;
- int flags = 0;
- for (i = 0; i < num - 1; i++)
- {
- flags = 0;
- for (j = 0; j < num - 1 - i; j++)
- {
- if(pData[j+1] < pData[j])//如果第j-1个元素比第j个元素小,则交换.
- {
- int temp = pData[j+1];
- pData[j+1] = pData[j];
- pData[j] = temp;
- flags = 1;//有交换发生,说明数组是无序的,即排序没有完成.
- }
- }
- if (flags == 0)
- break;
- }
- }