选择算法

来源:互联网 发布:linux怎么设置搜狗 编辑:程序博客网 时间:2024/06/06 00:25

代码:

  1. //选择排序  
  2.     public void selectSort(int[] array) {  
  3.         int min;  
  4.         int tmp = 0;  
  5.         for (int i = 0; i < array.length; i++) {  
  6.             min = array[i];  
  7.             for (int j = i; j < array.length; j++) {  
  8.                 if (array[j] < min) {  
  9.                     min = array[j];//最小值  
  10.                     tmp = array[i];  
  11.                     array[i] = min;  
  12.                     array[j] = tmp;  
  13.                 }  
  14.             }  
  15.         }  
  16.     } 


模拟

设 int[] array = new int[]{

5,13,4,8,1

};

执行 selectSort(int[] array);


min = null;

temp = 0;

第一层循环第一次{

i = 0;

min = array[i]; // array[0] = 5; 

第二层第一次{

j = i = 0;

//判断

array[j] < min ; // array[0] = min = 5 不满足条件

}

第二层第二次{

j++; // j = 1;

//判断

array[j] < min; // array[1] = 13; min = 5 ; array[1] > min ; 不满足

}

第二层第三次{

j++; // j=2;

//判断

array[j] < min; // array[2] = 4; min = 5  满足

   min = array[j];//最小值  min = array[2] = 4

tmp = array[i]; // tmp = array[0] = 5

array[i] = min;  // array[0] = 4;

array[j] = tmp; //array[2] = 5;

}

此时的数组排序为 4 13 5 8 1 

第二层第四次{

j++; // j=3;

//判断

array[j] < min; // array[3] = 8; min = 4  不满足 

}


第二层第五次{

j++; // j=4;

//判断

array[j] < min; // array[4] = 1; min = 4  满足

   min = array[j];//最小值  min = array[4] = 1

tmp = array[i]; // tmp = array[0] = 4

array[i] = min; // array[0] = 1;

array[j] = tmp; //array[4] = 4;

}

此时的数组排序为 1 13 5 8 4 

}


外层 第一次循环完之后  1 13 5 8 4           选出了最小的数字 排在数组的第一个 下面的循环以此类推


得到最终的数组为 1 4 5 8 13 



原创粉丝点击