3.1 算法的目标

对数组按照升序/降序进行排序
3.2 算法的思想
将满足条件的元素放到指定位置上
3.3 算法的具体步骤

以数组{2,4,6,3,2,4,1,8,8}为例
确定需要排序的次数:nums.length-1 ,需要进行8次排序。

step1:第一次排序,从num[0]——num[num.length-1]中寻找一个最小值,放到数组的最前面(与num[0]进行交换)
image.png

step2: 第二次排序,从num[1]——num[num.length-1]中寻找一个最小值,与num[1]进行交换
image.png
……
……
……
直至排序结束,完成插入排序!!!

  1. /**
  2. *选择排序
  3. * @param nums
  4. */
  5. public static void sort(int [] nums){
  6. //从nums[i]-nums[num.length-1]中选取最小的数与num[i]进行交换,i从0-nums.length-1;
  7. for (int i = 0; i <nums.length-1 ; i++) {
  8. int min=nums[i],index=i;
  9. //首先保存当前的num[i]的值作为这一轮的最小值,如果找到比这个还小的数,则进行交换
  10. for (int j = i+1; j <nums.length ; j++) {
  11. if (min>nums[j]){
  12. min=nums[j];
  13. index=j;
  14. }
  15. }
  16. //交换最小的值
  17. int temp=nums[i];
  18. nums[i]=min;
  19. nums[index]=temp;
  20. }
  21. }