码迷,mamicode.com
首页 > 编程语言 > 详细

简单选择排序

时间:2018-06-08 22:02:29      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:简单   ios   include   动态效果   选择排序   dex   main   AC   效果   

前言

简单选择排序是一种选择排序

选择排序:每趟从待排序的记录中选出关键字最小的记录,顺序放在已排序的记录序列末尾,直到全部排序结束为止。

算法思想

简单排序很简单,它的大致处理流程为:

  • 从待排序序列中,找到关键字最小的元素;
  • 如果最小元素不是待排序序列的第一个元素,将其和第一个元素互换;
  • 从余下的 N - 1 个元素中,找出关键字最小的元素,重复(1)、(2)步,直到排序结束。

动态效果示意图:

技术分享图片

 

 举例说明,处理过程示意图如下所示:

技术分享图片

如图所示,每趟排序中,将当前 i 小的元素放在位置 i 上。

 代码:

C++

 1 #include <iostream>
 2 #include <vector>
 3 using namespace std;
 4 
 5 vector<int> SelectSort(vector<int> list)
 6 {
 7     vector<int> result = list;
 8     for (int i = 0; i < result.size(); i++)
 9     {
10         int index = i;  // 用来保存最小值得索引
11 
12         for (int j = i + 1; j < result.size(); j++)
13         {
14             if (result[j] < result[i])
15                 index = j;
16         }
17 
18         swap(result[i], result[index]);
19         cout << "" << i + 1 << "趟:\t";
20         for (int i = 0; i < result.size(); i++)
21             cout << result[i] << " ";
22         cout << endl;
23     }
24     return result;
25 }
26 
27 int main() 
28 {
29     int arr[] = { 6, 4, 8, 9, 2, 3, 1 };
30     vector<int> test(arr, arr + sizeof(arr) / sizeof(arr[0]));
31     cout << "排序前" << endl;
32     for (int i = 0; i < test.size(); i++)
33         cout << test[i] << " ";
34     cout << endl;
35 
36     vector<int> result;
37     result = SelectSort(test);
38     cout << "排序后" << endl;
39     for (int i = 0; i < result.size(); i++)
40         cout << result[i] << " ";
41     cout << endl;
42 }

输出结果:

技术分享图片

 

参考资料

1. 简单选择排序

 

简单选择排序

标签:简单   ios   include   动态效果   选择排序   dex   main   AC   效果   

原文地址:https://www.cnblogs.com/sunbines/p/9157504.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!