排序——直接插入排序

矫情吗;* 2022-05-21 12:05 298阅读 0赞

排序——直接插入排序

  1. #include <iostream>
  2. using namespace std;
  3. void InSort(int a[],int c)
  4. {
  5. int i,j;
  6. for(i=2;i<=c;i++)//从第二个元素开始到最后一个元素
  7. {
  8. a[0]=a[i];//第一个
  9. for(j=i-1;a[j]>a[0];j--)
  10. {
  11. a[j+1]=a[j];
  12. }
  13. a[j+1]=a[0];
  14. }
  15. //输出
  16. for(int i=1;i<=c;i++)
  17. {
  18. printf("%d ",a[i]);
  19. }
  20. }
  21. int main() {
  22. // insert code here...
  23. int a[100];
  24. int c=0;
  25. int i=1;
  26. scanf("%d",&a[i]);
  27. while(a[i]!=0)
  28. {
  29. //printf("%d %d\n",i,a[i]);
  30. i++;
  31. scanf("%d",&a[i]);
  32. c++;
  33. }
  34. // for(int i=0;i<c;i++)
  35. // {
  36. // printf("%d ",a[i]);
  37. // }
  38. // printf("%d",c);
  39. // printf("\n");
  40. InSort(a,c);
  41. return 0;
  42. }
  43. #include <iostream>
  44. using namespace std;
  45. int main(int argc, const char * argv[]) {
  46. // insert code here...
  47. int a[100];
  48. int n;
  49. cin>>n;
  50. for(int i=1;i<=n;i++)
  51. {
  52. cin>>a[i];
  53. }
  54. //int j;
  55. // 6
  56. // 3 6 2 4 1
  57. for(int k=2;k<=n;k++)
  58. {
  59. int key=a[k];
  60. int m=k-1;
  61. while((a[m]>key)&&(m>0))
  62. {
  63. int t;
  64. t=a[m];
  65. a[m]=a[m+1];
  66. a[m+1]=t;
  67. m=m-1;
  68. }
  69. a[m+1]=key;
  70. }
  71. for(int i=1;i<=n;i++)
  72. {
  73. cout<<a[i]<<" ";
  74. }
  75. return 0;
  76. }

发表评论

表情:
评论列表 (有 0 条评论,298人围观)

还没有评论,来说两句吧...

相关阅读

    相关 插入排序(直接插入排序)算法

    算法描述 1. 将数组分为两个区域,排序区域和未排序区域,每一轮从未排序区域中取出第一个元素,插入到排序区域(需保证顺序) 2. 重复以上步骤,直到整个数组有序

    相关 直接插入排序

    从第一个元素开始,被认为是一个有序的序列,剩下的元素按位置顺序逐一与前面的有序序列进行比对并按序插入到序列中。这样序列首部从小大到序列在增长,序列尾部无序的部分在削减,直到最尾