数据结构合集详情请见链接:数据结构---汇总--合集
学习目标:
- 数据结构中的大概排序方法
- C语言中的排序以及常用的例子:C语言中-排序-常用例程
学习内容:
- 排序
- 常用排序
- 内排序(插入排序,交换排序,选择排序,归并排序)
- 插入排序(直接插入排序,折半插入排序,链表插入排序,Shell(希尔)排序)
3.常用排序代码(快速排序,折半)
具体介绍:
- 内排序
- 常用排序代码
#include <stdio.h>
#include <stdlib.h>
#define N 15
int partion(int *data, int low, int high);
int quick_sort(int *data, int low, int high);
int compare(const void *p1, const void *p2);
int main(int argc, const char *argv[])
{
int data[N] = {0};
int i;
srandom(10);
for (i = 0; i < N; i++) {
data[i] = random() % 100;
}
for (i = 0; i < N; i++) {
printf("%d ", data[i]);
}
puts("");
//quick_sort(data, 0, N-1);
qsort(data, N, sizeof(int), compare);
for (i = 0; i < N; i++) {
printf("%d ", data[i]);
}
puts("");
return 0;
}
int partion(int *data, int low, int high) {
int temp = data[low];
while (low < high) {
while (low < high && temp <= data[high]) {
high--;
}
data[low] = data[high];
while (low < high && temp >= data[low]){
low++;
}
data[high] = data[low];
}
data[low] = temp;
return low;
}
int quick_sort(int *data, int low, int high) {
int t;
if (data == NULL) {
return -1;
}
if (low >= high)
return 0;
t = partion(data, low, high);
quick_sort(data, low, t-1);
quick_sort(data, t+1, high);
return 0;
}
int compare(const void *p1, const void *p2) {
return (*(const int *)p1 - *(const int *)p2);
}