《数据结构:邓俊辉版》——冒泡排序
Posted predator-wang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《数据结构:邓俊辉版》——冒泡排序相关的知识,希望对你有一定的参考价值。
1、思路
每次都是相邻两个数之间进行比较;
每轮比较之后总是把最大的数或者最小的数筛选出来。
2、源码
#include <memory> void BubbleSort(int szArray[], int nLen); void main() { int szArray[] = {6,4,8,1,9,13}; BubbleSort(szArray, _countof(szArray)); getchar(); } void BubbleSort(int szArray[], int nLen) { int nTmp = 0; for (int j = 0; j < nLen - 1; j++) { for (int i = 0; i < nLen - j - 2; i++) { if (szArray[i] > szArray[i + 1]) { nTmp = szArray[i + 1]; szArray[i + 1] = szArray[i]; szArray[i] = nTmp; } } } printf("Sorted:"); for (int i = 0; i < nLen; i++) { printf(" %d ", szArray[i]); } printf(" "); }
3、优化
如果发现某一次循环已经全部有序了,那么就不再继续循环。
void OptBubbleSort(int szArray[], int nLen) { int nTmp = 0; int nTmpLen = nLen; BOOL bSorted = FALSE; while (!bSorted) { bSorted = TRUE; for (int i = 0; i < nTmpLen - 2; i++) { if (szArray[i] > szArray[i + 1]) { nTmp = szArray[i + 1]; szArray[i + 1] = szArray[i]; szArray[i] = nTmp; bSorted = FALSE; } } nTmpLen--; } printf("Sorted:"); for (int i = 0; i < nLen; i++) { printf(" %d ", szArray[i]); } printf(" "); }
3、时间复杂度分析
最理想状态下是O(n),平均状态下是O(n^2)
以上是关于《数据结构:邓俊辉版》——冒泡排序的主要内容,如果未能解决你的问题,请参考以下文章
排序算法(高级篇,整理自学堂在线邓俊辉老师《数据结构》课程)