69,373
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//快速排序
void quickSort(int array[], int low, int high)
{
int i = low, j = high, tmp = 0;
int mid = array[(low + high) / 2];
do{
while(array[i] < mid)
i++;
while(array[j] > mid)
j--;
if(i <= j)
{
tmp = array[i];
array[i] = array[j];
array[j] = tmp;
i++;
j--;
}
}while(i <= j);
if(low < j)
quickSort(array, low, j);
if(i < high)
quickSort(array, i, high);
}
void shellInsert(int array[], int length, int interval)
{
int i, j, key;
for(i = interval; i < length; i = i + interval)
if(array[i] < array[i - interval])
{
key = array[i];
for(j = i - interval; key < array[j]; j = j - interval)
array[j + interval] = array[j];
array[j + interval] = key;
}
}
//希亇排序
void shellSort(int array[], int length)
{
int i;
int interval[] = {5, 3, 1};
printf("ShellSort\n");
for(i = 0; i < 3; i++)
shellInsert(array, length, interval[i]);
}
void output(int array[], int length)//输出
{
int i;
for(i = 0; i < length; i++)
{
printf("%d ", array[i]);
}
printf("\n");
}
void changeArray(int array[], int length)
{
int i;
time_t t;
srand((unsigned) time(&t));
for(i = 0; i < length; i++)
array[i] = rand() / 100;
}
int main()
{
int array[10] = {0, 9, 8, 12, 3, 8, 3, 89, 23, 82};
int length = 10;
output(array, length);
quickSort(array, 0, length - 1);
output(array, length);
printf("\n");
changeArray(array, length);
output(array, length);
shellSort(array, length);
output(array, length);
printf("\n");
return 0;
}