欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

选择排序的理解

程序员文章站 2023-09-28 13:47:51
代码在最后,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 ......

代码在最后,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 }