选择排序的理解

代码在最后,c++语言,在codeblocks17.12下运行顺利

4

8

1

7

5

0

2

9

6

3

 

每一次都在剩下的数字中找到最小值 

0

8

1

7

5

4

2

9

6

3

 0的位置与4的位置交换

0

1

8

7

5

4

2

9

6

3

1的位置与8的位置交换 

0

1

2

7

5

4

8

9

6

3

2的位置与8的位置交换 

0

1

2

3

5

4

8

9

6

7

3的位置与7的位置交换 

0

1

2

3

4

5

8

9

6

7

4的位置与5的位置交换 

0

1

2

3

4

5

8

9

6

7

5的位置与5的位置交换还是原位置

0

1

2

3

4

5

6

9

8

7

6与8的位置交换 

0

1

2

3

4

5

6

7

8

9

7与9的位置交换 

0

1

2

3

4

5

6

7

8

9

                                                                                                                                                  8的位置与8的位置交换还是原位置

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 void Select_sort(int *a, int len);
 6 
 7 int main()
 8 {
 9     int arr[] = {1, 4, 8, 7, 3, 0, 9, 6, 5, 2};
10     Select_sort(arr, 10);
11     for(int i(0); i<10; i++)
12     {
13         cout << arr[i] << ' ';
14     }
15     cout << endl;
16 
17     return 0;
18 }
19 // 选择排序,可以选择最小值
20 void Select_sort(int *a, int len)
21 {
22     //第一个for循环表示要找len-1次最小值
23     for(int i=0; i<len-1; i++)
24     {
25         int min_x = i;
26         //从i索引值到最后索引值,开执找最小值
27         for(int j=i+1; j<len; j++)
28         {
29             if(a[min_x] >= a[j])
30                 min_x = j;  //j索引的值就被认为是最小值
31         }
32         swap(a[i], a[min_x]);
33         //第i次找到的最小值就与第i个索引值交换
34     }
35 }

 

posted @ 2019-08-09 08:19  yg_staring  阅读(227)  评论(0编辑  收藏  举报