3.插入排序.c 855 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #define N 8
  4. void insert_sort(int a[],int n);
  5. //插入排序实现,这里按从小到大排序
  6. void insert_sort(int a[],int n)//n为数组a的元素个数
  7. {
  8. int i,j,k;
  9. int temp;
  10. //进行N-1轮插入过程
  11. for(i=1; i<n; i++)
  12. {
  13. //首先找到元素a[i]需要插入的位置
  14. j=0;
  15. while( (a[j]<a[i]) && (j<i))
  16. {
  17. j++;
  18. }
  19. //将元素插入到正确的位置
  20. if(i != j) //如果i==j,说明a[i]刚好在正确的位置
  21. {
  22. temp = a[i];
  23. for(k = i; k > j; k--)
  24. {
  25. a[k] = a[k-1];
  26. }
  27. a[j] = temp;
  28. }
  29. }
  30. }
  31. int main()
  32. {
  33. int i;
  34. int num[N] = {89, 38, 11, 78, 96, 44, 19, 25};
  35. insert_sort(num, N);
  36. for(i=0; i<N; i++)
  37. printf("%d ", num[i]);
  38. printf("\n");
  39. system("pause");
  40. return 0;
  41. }