设顺序表L中存放着要排序的int类型的若干个元素,编写函数实现顺序表存储结构的直接插入排序、冒泡排序和直接选择排序
时间: 2024-01-21 18:17:39 浏览: 117
直接插入排序:
```
void InsertSort(SqList &L) {
int i,j;
for(i=2; i<=L.length; i++) {
if(L.data[i] < L.data[i-1]) { // 需将L.data[i]插入有序子表
L.data[0] = L.data[i]; // 复制为哨兵,即存储待排序元素
for(j=i-1; L.data[j]>L.data[0]; j--)
L.data[j+1] = L.data[j]; // 记录后移
L.data[j+1] = L.data[0]; // 插入到正确位置
}
}
}
```
冒泡排序:
```
void BubbleSort(SqList &L) {
int i,j;
for(i=1; i<L.length; i++) {
for(j=L.length-1; j>=i; j--) {
if(L.data[j] < L.data[j-1]) {
int temp = L.data[j];
L.data[j] = L.data[j-1];
L.data[j-1] = temp;
}
}
}
}
```
直接选择排序:
```
void SelectSort(SqList &L) {
int i,j,min;
for(i=1; i<L.length; i++) {
min = i;
for(j=i+1; j<=L.length; j++) {
if(L.data[j] < L.data[min])
min = j;
}
if(min != i) {
int temp = L.data[i];
L.data[i] = L.data[min];
L.data[min] = temp;
}
}
}
```
阅读全文