-->
当前位置:首页 > 题库 > 正文内容

函数题:基于顺序表的冒泡排序(轻者浮)【有题解视频】

Luz3年前 (2022-03-24)题库908
本题要求实现基于顺序表的“轻者浮”的冒泡排序算法,就是第一趟排序把最小值排到表首,第二趟排序把次小值排到表首第二位,以此类推。最后要求打印出每一趟的排序结果。顺序表的结构体定义如下
c
typedef int DataType;
#define LISTSIZE 100
typedef struct
{
DataType list[LISTSIZE];
int length;
}SqList;

### 函数接口定义:
c
void BubbleSort(SqList *L);

L 是用户传入的参数,代表待排序的顺序表,也是排序后返回的顺序表。要求打印出每一趟的排序结果。

### 裁判测试程序样例:
c
#include <stdio.h>

int InitList(SqList *L); /* 初始化顺序表 */
int ListInsert(SqList *L, int pos, DataType item); /* 插入结点,细节在此不表 */
int TraverList(SqList L); /* 打印顺序表,细节在此不表,可直接调用 */
void swap(SqList *L, int i, int j) /* 交换顺序表里下标为i和j的两个结点 */
{
DataType temp = L->list[i];
L->list[i] = L->list[j];
L->list[j] = temp;
}

void BubbleSort(SqList *L); /* 本题要求函数 */

int main()
{
SqList L;
DataType x;
char ch;
int pos = 1;
InitList(&L);
do
{
scanf("%d",&x);
ListInsert( &L , pos++ , x );
}while ((ch=getchar())!='\n');
BubbleSort(&L);
printf("The sorted List is\n");
TraverList(L);
return 0;
}

/* 请在这里填写答案 */


### 输入样例:
in
23 45 12 20 31



### 输出样例:
out
12 23 45 20 31
12 20 23 45 31
12 20 23 31 45
The sorted List is
12 20 23 31 45







答案:若无答案欢迎评论

#写在前面的话#

*提供题解视频,是为了帮助大家掌握算法的思想,在今后的编程、考试、面试中,换了语言,换了编译器,换了开发平台,都能重现这种思想,从而编写出任意语言任意编译器任意开发平台下面的这种算法的代码来,所以对于一打开题解报告,就直接拖到视频最后看参考代码的做法,我们非常不赞同,也不符合我们制作PPT录制讲解视频的初衷,希望大家体谅我们的苦心。*

https://www.bilibili.com/video/BV16P4y1T7At/
这个题解视频讲解的是重者沉的冒泡算法,对于轻者浮的冒泡算法,可以把循环的首位倒置一下,就是从后往前两两比较,看懂了视频,可以很方便地在重者沉的算法基础上改出轻者浮的冒泡算法来。双向冒泡算法亦如此。
![Sort1.png](~/b46b02cb-e592-41c9-bbbb-0f2c5624cbea.png)

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。