希尔排序算法代码 📅 发布时间:2026/9/1 16:46:14 👁 浏览次数: 希尔排序算法代码一、前言二、算法代码1、C语言2、Java语言一、前言最近要用到希尔排序的算法这里记录一下。二、算法代码1、C语言#includestdio.hvoidprint_arr(intarr[],intn){for(inti0;in;i){printf(%d ,arr[i]);}putchar(\n);}voidshell_sort(intarr[],intn)//arr为数组n为元素个数{inti;//外层循环使用步长分次数intj;//内层循环就是插入排序intinc;//步长intkey;//临时保存的变量//初始增量n/2每一趟之后除于二for(incn/2;inc0;incinc/2){//每一趟采用插入排序//i inc是从步长的第二个元素开始因为第一个元素没法比较本身就是有序的for(iinc;in;i){keyarr[i];//要插入的元素//key arr[j - inc]表示当前元素比前一个元素下标为当前元素-步长小才插入for(ji;jinckeyarr[j-inc];jj-inc){arr[j]arr[j-inc];}arr[j]key;}print_arr(arr,n);}}intmain(intargc,charconst*argv[]){intarr[]{15,5,2,7,12,6,1,4,3,9,8,10};print_arr(arr,12);shell_sort(arr,12);return0;}2、Java语言/** * 希尔排序 * * author: user * date: 2026-08-30 15:53 */publicclassShellSort{privatestaticvoidprintArr(int[]arr,intn){for(inti0;in;i){System.out.printf(%d ,arr[i]);}System.out.println();}privatestaticvoidshellSort(int[]arr,intn){inti;//外层循环使用步长分次数intj;//内存循环就是插入排序intinc;//步长intkey;//临时保存的变量//初始增量n/2每一趟之后除于二for(incn/2;inc0;incinc/2){//每一趟采用插入排序//i inc是步长的第二个元素开始因为第一个元素没法比较本事就是有序的for(iinc;in;i){keyarr[i];//要插入的元素//key arr[j - inc]表示当前元素比前一个元素下标为当前元素-步长小才插入for(ji;jinckeyarr[j-inc];jj-inc){arr[j]arr[j-inc];}arr[j]key;}printArr(arr,n);}}publicstaticvoidmain(String[]args){int[]arr{15,5,2,7,12,6,1,4,3,9,8,10};intlengtharr.length;printArr(arr,length);shellSort(arr,length);}}