冒泡排序(LD的讲解):
今天发生了一件令人很气愤的事情,一个简单的冒泡排序,我竟然潜意识的码了一边低配选择排序的代码。我还自信满满地跳过了这一题,现在想想真傻,真就过于眼高手底了。
因此我决定以后只要学一些算法就自己构思一遍在每天肌肉记忆的时候,将学习记录到CSDN上,先不管自己的代码是否优略了,如有不当欢迎大家指正,这里只不过是个人学习的记录,本想等所有算法学的差不多了,再整理,但今天的事情让我认为我因该现在就开始,等是不会进步的。
言归正传下面是冒泡排序的思想和代码:
先上代码:
#include<iostream>
using namespace std;
const int N = 1000;
int main()
{
int n;
cout << "输入一个数n:"; cin >> n;
cout << "请输入" << n << "个数,进行排序" << endl;
int a[N];
for (int i = 0; i < n; i++) cin >> a[i];
for (int i = 0; i < n - 1; i++)
for (int j = 0; j < n - i - 1; j++)
if (a[j] < a[j + 1])swap(a[j], a[j + 1]);//这是从大到小排 从小到大只需 if (a[j] > a[j + 1])swap(a[j], a[j + 1]);
cout << "排序后:" << endl;
for (int i = 0; i < n; i++)cout << a[i] << " ";
return 0;
}
思想:
有n个数,两个循环分别为外循环和内循环;
外循环n - 1次:
外循环主要作用是记录已经排完数的个数。
内循环n - 1 - i次: