当前位置:   article > 正文

插入法、选择法、冒泡法(C++实现)_插入选择法程序

插入选择法程序
  1. #include <stdio.h>
  2. #include <iostream>
  3. using namespace std;
  4. //插入法排序
  5. void InsertSort(int arr[],int num)
  6. {
  7. for (int i=1;i<num;i++) //需要插入num-1次
  8. {
  9. int temp = arr[i];//待插入的元素
  10. //在有序区域查找插入的位置
  11. int j = i-1; //用于标志插入的位置
  12. for (j = i-1;j>=0;j--) //遍历前面的有序区域,逐个比较,寻找插入的位置
  13. {
  14. if (arr[j]<temp) //如果有序区域的数值比待比较的数值要小,则把有序区域的这个数值往后移动
  15. {
  16. arr[j+1] = arr[j]; //如果
  17. }
  18. else //如果有序区域比较的这个数值大于或等于待插入的temp,说明该位置的后面就是要插入的位置,跳出循环
  19. {
  20. break;
  21. }
  22. }
  23. arr[j+1] = temp;
  24. }
  25. }
  26. //选择法排序
  27. void SelectSort(int arr[],int num)
  28. {
  29. for (int i=0;i<num-1;i++) //总共需要排序num-1次
  30. {
  31. int index = i; //index用于代表无序区最大值的索引
  32. for (int j = i+1;j<num;j++) //遍历无序区域,找到无序区域最大值的索引
  33. {
  34. if (arr[j]>arr[index])
  35. {
  36. index = j;
  37. }
  38. }
  39. //把无序区的最大值放到无序区域的第一个位置
  40. if (index != i)
  41. {
  42. int temp = arr[i];
  43. arr[i] = arr[index];
  44. arr[index] = temp;
  45. }
  46. }
  47. }
  48. //冒泡法排序
  49. void BubbleSort(int arr[],int num)
  50. {
  51. for (int i=0;i<num-1;i++) //总共需要冒泡num-1次
  52. {
  53. for (int j=num-1;j>i;j--) //从无序区中遍历冒泡
  54. {
  55. if (arr[j]>arr[j-1]) //交换顺序
  56. {
  57. int temp = arr[j];
  58. arr[j] = arr[j-1];
  59. arr[j-1] = temp;
  60. }
  61. }
  62. }
  63. }
  64. void PrintArray(int arr[],int num)
  65. {
  66. for (int i=0;i<num;i++)
  67. {
  68. cout<< arr[i] << " ";
  69. }
  70. }
  71. int main()
  72. {
  73. int arr[5] = {1,6,3,8,9};
  74. //InsertSort(arr,5); //插入法排序
  75. //SelectSort(arr,5); //选择法排序
  76. BubbleSort(arr,5); //冒泡法排序
  77. PrintArray(arr,5);
  78. system("pause");
  79. return 0;
  80. }

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号