waiting...'s Blog

选择排序

 

  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <ctime>
  4. using namespace std;
  5.  
  6. // 设置随机整数的种子
  7. void rand_seed()
  8. {
  9.         unsigned int seed = static_cast<unsigned int>(time(0));
  10.         srand(seed);
  11. }
  12.  
  13. // 返回一个介于lower与upper之间的一个随机整数
  14. int randInt(int lower, int upper)
  15. {
  16.         return lower + rand() % (upper - lower + 1);
  17. }
  18.  
  19. // 交换两个数的值
  20. void swap(int &a, int &b)
  21. {
  22.         int temp = a;
  23.         a = b;
  24.         b = temp;
  25. }
  26.  
  27. void print(const int a[], int length)
  28. {
  29.         for (int i = 0; i < length; i++)
  30.                 cout << a[i] << " ";
  31.         cout << endl;
  32. }
  33.  
  34. // 函数_选择排序_升序排列
  35. void selection_sort(int a[], int length)
  36. {
  37.         int i, j, temp_index;
  38.         for (i = 0; i < length - 1; ++i)
  39.         {
  40.                 temp_index = i;  // 存储未排序区中最大值的索引
  41.                 for (j = i + 1; j < length; ++j)
  42.                         if (a[j] < a[temp_index])  // 大于号:降序排列, 小于号:升序排列
  43.                                 temp_index = j;
  44.                 // 交换已排序区的最后一个数字 和 未排序区的最大的数字
  45.                 swap(a[temp_index], a[i]);
  46.         }
  47. }
  48.  
  49. int main()
  50. {
  51.         const int length = 20// 数组长度
  52.         const int lower = 1// 随机数上限
  53.         const int upper = 1000// 随机数下限
  54.         int a[length];
  55.  
  56.         // 初始化随机数种子
  57.         rand_seed();
  58.  
  59.         // 初始化数组
  60.         for (int i = 0; i < length; i++)
  61.                 a[i] = randInt(lower, upper);
  62.  
  63.         // 输出数组
  64.         cout << "升序排列前的数组:" << endl;
  65.         print(a, length);
  66.  
  67.         // 选择排序
  68.         selection_sort(a, length);
  69.  
  70.         // 输出数组
  71.         cout << "升序排列后的数组:" << endl;
  72.         print(a, length);
  73.  
  74.         return 0;
  75. }

运行结果:




Host by is-Programmer.com | Power by Chito 1.3.3 beta | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee