希尔排序(不稳定的排序算法)
时间复杂度:O(n²)
代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>
#define swap(a,b) {typeof(a) temp=a; a=b; b=temp;}
void show(int* arr, size_t len)
{
for(int i=0; i<len; i++)
{
printf("%d ",arr[i]);
}
printf("\n");
}
void shell_sort(int* arr, size_t len)
{
int increment = len;
do{
increment = increment/3+1;
for(int i=increment; i<len; i++)
{
if(arr[i] < arr[i-increment])
{
int temp = arr[i];
arr[i] = arr[i-increment];
arr[i-increment] = temp;
}
}
}
while(increment>1);
}
int main()
{
int arr[10];
for(int i=0; i<10; i++)
{
printf("%d ",arr[i]=rand()%100);
}
printf("\n");
shell_sort(arr,10);
show(arr,10);
}