ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C++冒泡算法解析

2020-07-14 18:34:37  阅读:301  来源: 互联网

标签:return int pArray nCount C++ 算法 冒泡 nIndex nMin


                                                     冒泡排序(Bubble Sort) 定义:它是一种计算机科学领域的较简单经典的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。   时间复杂度:最优:O(N²),最坏:O(N²),平均:O(N²)。 空间复杂度:最优:O(N²),最坏:O(N²),平均:O(N²)。   算法过程示意图:   下面是初版代码逻辑:
 1 #include <iostream>
 2 #include <random>
 3 
 4 
 5 constexpr const int ARRAY_LENGTH = 10;
 6 
 7 int getRandomVal(int nMin, int nMax) {
 8     if (nMin == nMax) {
 9         return nMin;
10     }
11 
12     if (nMin > nMax) {
13         return std::rand() % (nMin - nMax) + nMax;
14     } else {
15         return std::rand() % (nMax - nMin) + nMin;
16     }
17 }
18 
19 bool getRandomArray(int *pArray, int nSize) {
20     if (nullptr == pArray
21         || 0 >= nSize) {
22         return false;
23     }
24 
25     for (int nIndex = 0; nIndex < nSize; nIndex++) {
26         *pArray = getRandomVal(1, 50);
27         ++pArray;
28     }
29 
30     return true;
31 }
32 
33 bool bubbleSort(int *pArray, int nSize) {
34     if (nullptr == pArray
35         || nSize < 2) {
36         return false;
37     }
38 
39     bool bSortOver = true;
40     int nSortCount = nSize - 1;
41 
42     for (int nIndex = 0; nIndex < nSize; nIndex++) {
43         for (int nCount = 0; nCount < nSortCount; nCount++) {
44             if (pArray[nCount] > pArray[nCount + 1]) {
45                 int nTempVal = pArray[nCount];
46                 pArray[nCount] = pArray[nCount + 1];
47                 pArray[nCount + 1] = nTempVal;
48                 bSortOver = false;
49             }
50         }
51 
52         if (bSortOver) {
53             break;
54         }
55 
56         bSortOver = true;
57         nSortCount--;
58     }
59 
60     return true;
61 }
62 
63 int main() {
64     int szArray[ARRAY_LENGTH] = { 0 };
65 
66     if (!getRandomArray(szArray, ARRAY_LENGTH)) {
67         return 0;
68     }
69 
70     if (!bubbleSort(szArray, ARRAY_LENGTH)) {
71         return 0;
72     }
73 
74     for (int nIndex = 0; nIndex < ARRAY_LENGTH; nIndex++) {
75         std::cout << szArray[nIndex] << std::endl;
76     }
77 
78     std::cin.get();
79 
80     return 0;
81 }
82

 

标签:return,int,pArray,nCount,C++,算法,冒泡,nIndex,nMin
来源: https://www.cnblogs.com/silentwei/p/13300766.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有