希尔排序
希尔排序详细图解来自:排序:希尔排序(算法) - 简书 (jianshu.com)
希尔排序与插入排序最大的差别:希尔排序的步长是gap,而插入排序的步长是1
#include<stdio.h> //希尔排序 void ShellSort(int *arr,int n) { for(int gap=n/2;gap>0;gap/=2) //控制步长gap的变化 { for(int i=gap;i<n;i++) //未排序部分 { for(int j=i-gap;j>=0;j-=gap) //已排序部分 { if(arr[j]>arr[j+gap]) { int temp=arr[j]; arr[j]=arr[j+gap]; arr[j+gap]=temp; } } } } } int main() { int arr[10]={1,4,2,9,6,3,0,8,5,7}; ShellSort(arr,10); for(int i=0;i<10;i++) { printf("%d\t",arr[i]); } printf("\n"); return 0; }
浙公网安备 33010602011771号