//开始时是整个顺序表都是无序的,就算有序计算机也不知道
//而后逐步扩大有序序列,减小无需序列
//有序序列在表后,无序序列在表前,且有序序列中的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-07-22 12:30:30 发布