当前位置:   article > 正文

c语言三种插入排序算法_c语言编写程序实现插入排序算法

c语言编写程序实现插入排序算法

一、直接插入排序:前面基本有序,小的往前插入

  1. #include <stdio.h>
  2. int *Sort(int A[],int n){
  3. /*直接插入排序精简版*/
  4. int i,j;
  5. for ( i = 1; i <= n; i++ )
  6. if ( A[i] < A[i-1] ){
  7. A[0] = A[i];
  8. for ( j = i; A[0] < A[j-1]; --j )
  9. A[j] = A[j-1];
  10. A[j] = A[0];
  11. }
  12. return A;
  13. }
  14. int main() {
  15. int a[] = {0,0,11,4,3,6,2,7,5,8,9,10,1}; //A[0]第一个是哨兵
  16. int lens = sizeof(a)/sizeof(a[0]); //字节总数/单个字节数
  17. int *b = Sort(a,lens);
  18. printf(" lens = %d ",lens);
  19. for (int i = 1; i < lens; ++i) { // A[0]第一个是哨兵
  20. printf("%d ",b[i]);
  21. }
  22. return 0;
  23. }

二、折半插入排序:前面基本有序,小的使用折半方式往前插入

  1. #include <stdio.h>
  2. int *Sort(int A[],int n){
  3. /*直接插入排序精简版*/
  4. int i,j,low,high,mid,temp;
  5. for(i=1;i<n;i++){
  6. temp = A[i];
  7. low = 0;
  8. high = i - 1;
  9. while(low<=high){
  10. mid = (low+high)/2;
  11. if (A[mid] > temp) high = mid-1;
  12. else low = mid + 1;
  13. }
  14. for (j=i-1;j>=low;j--);
  15. A[j+1] = A[j];
  16. if(low!=i)
  17. A[low] = temp;
  18. };
  19. return A;
  20. }
  21. int main() {
  22. int a[] = {8,6,9,2,4,1,0}; //A[0]第一个是哨兵
  23. int lens = sizeof(a)/sizeof(a[0]); //字节总数/单个字节数
  24. int *b = Sort(a,lens);
  25. printf(" lens = %d ",lens);
  26. for (int i = 0; i < lens; ++i) { // A[0]第一个是哨兵
  27. printf("%d ",b[i]);
  28. }
  29. return 0;
  30. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/821389
推荐阅读
相关标签
  

闽ICP备14008679号