赞
踩
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默:
-------
用户从键盘输入N,然后输入N个实数,使用冒泡排序方法对这N个元素排序,输出排序后的数据。
何谓冒泡排序法
(1)两两比较相邻元素A(I)和A(I+1)(I=1,2,…N-1),如果A(I)>A(I+1),则交换A(I)和A(I+1)的位置;
(2)对剩下的N-1个元素,再两两进行比较,按同样规则交换它们的位置,经过N-2次比较,将次最大值交换到A(N-1)的位置;
(3)如法炮制,经过N-1趟的“冒泡处理”,每趟进行N-i次的比较,全部数列有序。
算法描述
- #include<iostream> //包含输入输出头文件
- #include<cmath>
- using namespace std; //指定名字空间
- int main()
- { //主函数
- int a[100]; //定义数组,大小100
- int N; //元素的实际个数
- int i = 0, j = 0; //循环变量,并进行初始化
- cin >> N; //输入元素个数
- //-------输入数据-----------
- for (i = 0; i<N; i++) //输入N个元素
- cin >> a[i]; //循环体只有一行
- //-------排序---------------
- for (i = 0; i<N - 1; i++) { //控制n-1趟冒泡
- for (j = 0; j<N - 1 - i; j++)
- {
- if (a[j]>a[j + 1]) { //比较相邻的两个元素
- int tmp; //临时变量
- tmp = a[j]; //交换
- a[j] = a[j + 1];
- a[j + 1] = tmp;
- }
- }
- }
- //--------输出----------
- for (i = 0; i<N; i++)
- { //使用循环,输出N个元素
- cout << a[i] << " "; //输出a[i], 后加空格,不换行
- }
- cout << endl; //所有元素输出完之后才换行
- return 0; //函数返回
- }
- void bubbleSort(int a[], int n)
- {
- for(int i = n - 1; i > 0; i--)
- for(int j = 0; j < i; j++)
- if(a[j] > a[j+1])
- swap(a[j], a[j+1]);
- }
思路拓展
①修改程序,用户不再先输入元素个数,而是在输入数据时以99999为结束符,如输入:20 13 01 30 23 52 15 34 99999结果为:1 13 15 20 23 30 34 52②当元素较多时,在一行中输出所有元素是不现实的。虽然系统会自动换行,但不整齐。请修改程序,使每行输出5个元素。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。