标签:int void length 冒泡排序 BubbleSort flag SqList 反序
两两比较相邻记录,如果反序则交换,直到没有反序的记录。
时间复杂度O(n2)
#include <iostream>
#include <cstdlib>
//顺序表结构
#define MAXSIZE 10 //要排序数组个数最大值
typedef struct
{
int r[MAXSIZE + 1]; //存储要排序数组,r[0]作为哨兵或临时变量
int length; //记录顺序表长度
}SqList;
//交换函数
void swap(SqList* L, int i, int j)
{
int temp = L->r[i];
L->r[i] = L->r[j];
L->r[j] = temp;
}
void BubbleSort2(SqList * L){
int i, j;
bool flag = true;
for (i = 1; i < L->length && flag; ++i){
flag = false;
for (j = L->length; j >= i; --j){
if (L->r[j] > L->r[j + 1]){
swap(L, j, j + 1);
flag = true;
}
}
}
}
void main()
{
SqList data;
int len = 10; //待排序列个数
srand((int)time_t(NULL));
data.r[0] = { 0 };
std::cout << "排序前的数列为:";
for (int i = 1; i <= len; ++i)
{
data.r[i] = rand() % 10 + 1;
std::cout << data.r[i] << ' ';
}
data.length = len;
BubbleSort2(&data);
printf("\n");
std::cout << "排序后的数列为:";
for (int i = 1; i <= len; ++i)
{
std::cout << data.r[i] << ' ';
}
}
标签:int,void,length,冒泡排序,BubbleSort,flag,SqList,反序 来源: https://blog.csdn.net/yangsong95/article/details/101145978
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。