选择排序

来源:互联网 发布:类似网络剪刀手的软件 编辑:程序博客网 时间:2024/05/08 03:06

选择排序

1、选择排序:直接选择排序就是选择排序的一种,还是一种堆排序

2、关键字字:选择。就是“挑”的意思:

从一个序列中,找出最大的元素(挑),放在第一个单元格中,重复这个方法,直到只剩下一个元素为止。

3、从大到小排序,假设第一位置为最大的单元格,带颜色的表示要进行比较的两个单元格

原始数据:

a1-a10

0

4

6

2

8

5

1

9

7

3

第1轮排序(从这10个变量中选出最大的共需比较9次)

第1次交换,4比0大交换

4

0

6

2

8

5

1

9

7

3



第2次交换,6比4大交换

6

0

4

2

8

5

1

9

7

3



第3次交换,6比 2大不交换

6

0

4

2

8

5

1

9

7

3



第4次交换,8比6大交换

8

0

4

2

6

5

1

9

7

3



第5次交换,5没有8大不交换

8

0

4

2

6

5

1

9

7

3



第6次排序,1没有8大不交换

8

0

4

2

6

5

1

9

7

3



第7次排序,9比8大交换

9

0

4

2

6

5

1

8

7

3



第8次排序,7没有9大不交换

9

0

4

2

6

5

1

8

7

3



第9次排序,3没有9大不交换

9

0

4

2

6

5

1

8

7

3

 

 

第2轮排序(从剩下的9个变量中选出最大的共需比较8次)

第1次交换,4比0大交换

4

0

2

6

5

1

8

7

3

 

 

第2次交换,2没有4大不交换

4

0

2

6

5

1

8

7

3

 

 

第3次交换,6比4大交换

6

0

2

4

5

1

8

7

3

 

 

第4次交换,5没有6大不交换

6

0

2

4

5

1

8

7

3

 

 

第5次交换,1没有6大不交换

6

0

2

4

5

1

8

7

3

 

 

第6次交换,8比6大交换

8

0

2

4

5

1

6

7

3

 

 

第7次交换,7没有8大不交换

8

0

2

4

5

1

6

7

3

 


第8次交换,3没有8大不交换

8

0

2

4

5

1

6

7

3

 

 

第3轮排序(从剩下的8个变量中选出最大的共需比较7次)

第1次交换,2比0大交换

2

0

4

5

1

6

7

3



第2次交换,4比2大交换

4

0

2

5

1

6

7

3

 

 

第3次交换,5比4大交换

5

0

2

4

1

6

7

3

 

 

第4次交换,1没有4大不交换

5

0

2

4

1

6

7

3

 

 

第5次交换,6比5大交换

6

0

2

4

1

5

7

3

 

 

第6次交换,6没有7大不交换

7

0

2

4

1

5

6

3

 

 

第7次交换,3没有7大不交换

7

0

2

4

1

5

6

3

 

 

第4轮排序(从剩下的7个变量中选出最大的共需比较6次)

第1次交换,2比0大交换

2

0

4

1

5

6

3

 

 

第2次交换,4比2大交换

4

0

2

1

5

6

3

 

 

第3次交换,1没有4大不交换

4

0

2

1

5

6

3

 

 

第4次交换,5比4大交换

5

0

2

1

4

6

3

 

 

第5次交换,6比5大交换

6

0

2

1

4

5

3

 

 

第6次交换,3没有6大不交换

6

0

2

1

4

5

3

 


第5轮排序(从剩下的6个变量中选出最大的共需比较5次)

第1次交换,2比0大交换

2

0

1

4

5

3

 

 

第2次交换,1没有 2大不交换

2

0

1

4

5

3

 

 

第3次交换,4比2大交换

4

0

1

2

5

3

 

 

第4次交换,5比4大交换

5

0

1

2

4

3

 

 

第5次交换,3没有 5大不交换

5

0

1

2

4

3

 

 

第6轮排序(从剩下的5个变量中选出最大的共需比较4次)

第1次交换,1比0大交换

1

0

2

4

3

 

 

第2次交换,1比2大交换

2

0

1

4

3

 

 

第3次交换,4比2大交换

4

0

1

2

3

 

 

第4次交换,3比4大交换

4

0

1

2

3

 

 

第7轮排序(从剩下的4个变量中选出最大的共需比较3次)

第1次交换,1比0大交换

1

0

2

3

 

 

第2次交换,2比1大交换

2

0

1

3

 

 

第3次交换,3比2大交换

3

0

1

2

 

 

第8轮排序(从剩下的3个变量中选出最大的共需比较2次)

第1次交换,1比0大交换

1

0

2

 

 

第2次交换,2比1大交换

2

0

1

 

 

第9轮排序(从剩下的2个变量中选出最大的共需比较1次)

第1次交换,1比0大交换

1

0

 

 

选择排序图   

                                                                        

VB代码:

         Fori=1 to 9  //外循环i n-1

                     For j=i+1 to 10  //内循环i+1

                            If a(i)<a(j) then

                                   t=a(i):a( i)=a(j):a(j)=t

                            End if

                     Next

              Next

C#代码:

static void(int[]group)

{

    int temp;

    int pos=0;

    for(inti=0;i< group.Length-1;i++)

pos=i;

       for(intj=i+1;j<group.Length;j++)

        {

           if(group[j]<group[pos])

            {

               pos=j;

            }

        }//第i个数与最小的数group[pos]交换

       temp=group[i];

       group[i]=group[pos];

       group[pos]=temp;

    }

}

 

1 0
原创粉丝点击