希尔排序
希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。
希尔排序是基于插入排序的以下两点性质而提出改进方法的:
- 插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率
- 但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位
过程演示:
1 #include <stdio.h> 2 3 void shell_sort(int arr[],int len) { 4 gap,i,j; 5 temp; 6 for (gap = len >> 1; gap > 0; gap = gap >> 1) 7 for (i = gap; i < len; i++) { 8 temp = arr[i]; 9 for (j = i - gap; j >= 0 && arr[j] > temp; j -= gap) 10 arr[j + gap] = arr[j]; 11 arr[j + gap] =12 } 13 } 14 15 main() { 16 int arr[] = { 22,34,1)">3,1)">32,1)">82,1)">55,1)">89,1)">50,1)">37,1)">5,1)">64,1)">35,1)">9,1)">70 }; 17 int len = (int) sizeof(arr) / sizeof(*arr); 18 i; 19 shell_sort(arr,len); 20 21 for (i = 0; i < len; i++22 printf("%d ",arr[i]); 23 return 0; 24 }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。