//开始时是整个顺序表都是无序的,就算有序计算机也不知道
//而后逐步扩大有序序列,减小无需序列
//有序序列在表后,无序序列在表前,且有序序列中的key最小的元素的key都大于无序序列中的任意一个元素的key
#include<iostream>
using namespace std;
#define N 8
void bubble_sort(int a[], int n)
{ // 将a中整数序列重新排列成自小至大有序的整数序列(起泡排序)
int i, j, t;
bool change;
for (i = n - 1, change = true; i>1 && change; --i)
{
change = false;//只要有一次交换,change=true;如果循环时没有发生交换,说明整个表已经更新为值递增的有序表并退出循环
for (j = 0; j<i; ++j)//实现将无序序列中的最大值归入有序序列中
{
if (a[j]>a[j + 1])
{
t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
change = true;
}
}
}
}
void print(int r[], int n)
{
int i;
for (i = 0; i<n; i++)
printf("%d ", r[i]);
printf("\n");
}
void main()
{
int d[N] = { 49, 38, 65, 97, 76, 13, 27, 49 };
printf("排序前:\n");
print(d, N);
bubble_sort(d, N);
printf("排序后:\n");
print(d, N);
}
数据结构交换排序之起泡排序(参考严蔚敏数据结构)
最新推荐文章于 2022-10-03 13:20:14 发布
本文介绍了一种简单的排序算法——起泡排序,并通过C++代码实现了该算法。文章详细解释了起泡排序的工作原理:通过重复遍历待排序的数列,每次比较相邻两个元素并按顺序调整它们的位置,直到数列完全变为递增有序。

423

被折叠的 条评论
为什么被折叠?



