C语言算法:希尔排序,图解
玩转嵌入式
专注于单片机、ARM、嵌入式等硬件、软件设计经验的分享,并提供一定的技术支持。我已加入“维权骑士”(rightknights.com)的版权保护计划
Official Account
来源:嵌入式linux | 排版:玩转嵌入式
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int shell_sort(int arr[],int n)
{
register int i, j, tmp;
int step;
for(step = n/2; step > 0;step /= 2)/*增量步长*/
{
/*step = 4 2 1*/
for(i = step; i < n; i++)
{
tmp = arr[i];
j = i - step;
for(;j >= 0 && tmp < arr[j];)
{
arr[j + step] = arr[j];
j -= step;
}
arr[j + step] = tmp;
}
}
}
#define LENGTH 8
int main( int argc, int *argv[])
{
int i;
int arr[LENGTH] = {6,5,3,1,8,7,2,4};
for(i=0;i<LENGTH;i++)
printf("%d ",arr[i]);printf("\n");
shell_sort(arr,LENGTH);
for(i = 0;i < LENGTH;i++)
printf("%d ", arr[i]);printf("\n");
}
6 5 3 1 8 7 2 4
1 2 3 4 5 6 7 8