直接插入排序和快速排序函数
具体实现
#include<stdio.h>
typedef struct {
int a[6];
int length;
}list, * sqlist;
void insertsort(sqlist& l);
int partition(sqlist& l, int low, int high);
void qsort(sqlist& l, int low, int high);
void insertsort(sqlist& l) {
int i, j;
for (i = 2; i <= l->length; ++i)
if (l->a[i] < l->a[i - 1]) {
l->a[0] = l->a[i];
l->a[i] = l->a[i - 1];
for (j = i - 2; l->a[0] < l->a[j]; --j)
l->a[j + 1] = l->a[j];
l->a[j + 1] = l->a[0];
}
}
int partition(sqlist& l, int low, int high) {
int pivotkey;
l->a[0]= l->a[low];
pivotkey = l->a[low];
while (low < high) {
while (low < high && l->a[high] >= pivotkey)
--high;
l->a[low] = l->a[high];
while (low < high && l->a[low] <= pivotkey)
++low;
l->a[high] = l->a[low];
}
l->a[low] = l->a[0];
return low;
}
void qsort(sqlist& l, int low, int high) {
int pivotloc;
if (low < high) {
pivotloc = partition(l, low, high);
qsort(l, low, pivotloc - 1);
qsort(l, pivotloc + 1, high);
}
}
int main() {
list l;
l.length = 5;
int i;
l.a[1] = 2;
l.a[2] = 6;
l.a[3] = 1;
l.a[4] = 7;
l.a[5] = 3;
sqlist s = &l;
qsort(s, 1, 5);
for (i = 1; i < 6; i++) {
printf("%d\n", s->a[i]);
}
return 0;
}