排序分析(冒泡)
题目:给定一组由六个整数组成的一个序列{3,8,15,5,11,9}将其按照从小到大的顺序排列。
思想:从一端开始依次将相邻两个数的比较,当它们不符合顺序时就就行一次交换。
过程 | 3,8,15,5,11,9 |
---|---|
第一趟 | 3,8,15,5,11,9 |
第二趟 | 3,8,15,5,11,9 |
第三趟 | 3,8,5,15,11,9 |
第四趟 | 3,8,5,11,15,9 |
第五趟 | 3,8,5,11,9,15 |
第一趟结束后得到了一个新序列{3,8,5,11,9,15}。再将新的序列重复上述操作直到成为一个有序的序列。
流程图
程序实现
// 冒泡排序
#include<stdio.h>
#include<stdlib.h>
int main()
{
const int n = 6;
int a[n];
int i, j, tmp=0;
for (i = 0; i <n; ++i)
scanf_s("%d", a+i);
for (i = 1; i < n; ++i)
{
for (j = 0; j < n - i; ++j)
if (a[j] > a[j + 1])
{
tmp = a[j];
a[j] = a[j + 1];
a[j + 1] = tmp;
}
}
for (i = 0; i <=5; i++)
printf("%5d", a[i]);
system("pause");
return 0;
}