插入排序之希尔排序
1 void shell_sort() 2 { 3 unsigned char i=0,j=0,gap; 4 unsigned char arr[10] = {4,1,3,9,6,2,8,5,0,7}; 5 unsigned char len = sizeof(arr); 6 unsigned char temp; 7 char k; 8 gap = len; 9 while(gap) 10 { 11 gap /= 2; 12 /*共gap个数组,对每一组都进行直接插入排序*/ 13 for(i = 0; i < gap; i++) 14 { 15 /*如果后值小于前值,则寻找后值位置*/ 16 for( j = i+gap; j < len; j += gap) 17 { 18 if(arr[j] < arr[j - gap]) 19 { 20 temp = arr[j]; 21 k = j-gap; 22 while(k >= 0 && arr[k] >temp) 23 { 24 arr[k + gap] = arr[k]; 25 k -= gap; 26 } 27 arr[k + gap] = temp; 28 } 29 } 30 } 31 } 32 33 for(i=0;i<10;i++) 34 { 35 printf("%d\n",arr[i]); 36 } 37 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通