选择排序法

来源:互联网 发布:华为网盘mac版 编辑:程序博客网 时间:2024/04/30 06:59

     选择法排序的原理:依次选定数组中的每一个数,记下当前位置并假设它是从当前位置开始后面数中的最大数(max=i),从这个数的下一个数开始扫描直到最后一个数,并记录下最大数的位置(max),扫描结束后如果max不等于i,说明假设错误,则交换max与i位置上的数。

     以整形数组元素为例,有数组A[10](以C语言为例描述),即A[0],A[1],…,A[8],A[9](假设其元素均互不相同)。要求对其元素排序使之递增有序。首先以一个元素为基准,从一个方向开始扫描,比如从左至右扫描,以A[0]为基准。接下来从A[0],…,A[9]中找出最小的元素,将其与A[0]交换。然后将基准位置右移一位,重复上面的动作,比如,以A[1]为基准,找出A[1]~A[9]中最小的,将其与A[1]交换。一直进行到基准位置移到数组最后一个元素时排序结束(此时基准左边所有元素均递增有序,而基准为最后一个元素,故完成排序算法。)

                     int sort(int a[],int n)
                      {
                         int i,temp,j,max;
                        

                          for(i = 0;i<n-1;i++)
                               {
                                     max = i ;
                                     for(j=i+1;j<n;j++)
                                       {

                                          if(a[j]<a[min])
                                              max = j;

                                       }
                                       if(max != i )/*若max中记录的最大数序号不是i,即假设不成立*/
                                          {
                                             temp=a[i] ;
                                            a[i]=a[min] ;
                                            a[min]=temp ;
                                         }
                              }
                    }

原创粉丝点击