基础算法之 选择排序

来源:互联网 发布:10nba总决赛数据 编辑:程序博客网 时间:2024/06/05 08:27

概念 :每一趟从待排序的数据元素中选出最 ( 大/小 ) 值的一个元素,顺序放在已排好序的数列的最后或最前,直到全部待排序的数据元素排完。 如下图

这里写图片描述

下面演示java示意代码:

方案一 :

int [] arrays = {4,13,56,42,78,0};for(int i = 0; i< arrays.length-1;i++){   for(int j = i+1; j< arrays.length;j++)   {       if(arrays[i] > arrays[j])       {          int temp = arrays[i];          arrays[i] = arrays[j];          arrays[j] = temp;             }   }}

方案二 :

int [] arrays = {4,13,56,42,78,0};for(int i = 0; i< arrays.length-1;i++){   int minIndex = i;    for(int j = i+1; j< arrays.length;j++)   {       if(arrays[i] > arrays[j])       {        minIndex = j;       }   }   if(minIndex != i)   {              int temp = arrays[i];          arrays[i] = arrays[minIndex];          arrays[minIndex] = temp;         }}

.
.
.

oc代码如下:

NSMutableArray *arrays = [NSMutableArray arrayWithArray:@[@31,@3,@8,@9]];for (int i = 0; i < arrays.count-1; i++) {     //默认最小位置是初始位置     int minIndex = i;     for (int j = minIndex+1; j < arrays.count; j++)      {                //记住最小角标                if (arrays[minIndex] > arrays[j])                 {                    minIndex = j;                }            }        if (minIndex != i)         {             [arrays exchangeObjectAtIndex:i withObjectAtIndex:minIndex];         } }注意 : 数组的操作是在内存上,如果按照如上方案一去实现,频繁操作内存的话,是损耗性能的。
原创粉丝点击