动态顺序表的排序算法C语言
时间: 2023-11-23 12:10:11 浏览: 70
动态顺序表的排序算法可以使用常见的排序算法,如冒泡排序、选择排序、插入排序、快速排序等。下面以冒泡排序和快速排序为例,给出C语言代码实现。
1. 冒泡排序
冒泡排序是比较简单的排序算法,其基本思想是将相邻的元素两两比较,将较大的元素向后移动,最终把最大的元素移到最后面。
```c
void bubble_sort(DSqList *L) {
int i, j;
for (i = 0; i < L->length - 1; i++) {
for (j = 0; j < L->length - i - 1; j++) {
if (L->data[j] > L->data[j + 1]) {
swap(&L->data[j], &L->data[j + 1]);
}
}
}
}
```
2. 快速排序
快速排序是一种高效的排序算法,其基本思想是通过一趟排序将待排序列分成两部分,其中一部分的所有元素都比另一部分的所有元素小,然后再分别对这两部分进行排序,直到整个序列有序。
```c
int partition(DSqList *L, int low, int high) {
int pivotkey = L->data[low];
while (low < high) {
while (low < high && L->data[high] >= pivotkey) {
high--;
}
swap(&L->data[low], &L->data[high]);
while (low < high && L->data[low] <= pivotkey) {
low++;
}
swap(&L->data[low], &L->data[high]);
}
return low;
}
void quick_sort(DSqList *L, int low, int high) {
if (low < high) {
int pivotloc = partition(L, low, high);
quick_sort(L, low, pivotloc - 1);
quick_sort(L, pivotloc + 1, high);
}
}
```
以上是动态顺序表的排序算法C语言代码实现,需要注意的是,这里的DSqList是一个结构体,包含了数据元素和长度等信息。另外,需要自己实现swap函数用来交换两个元素的值。
阅读全文