HomeWork02.java 1.3 KB

12345678910111213141516171819202122232425262728293031323334
  1. /**
  2. * @author WanJl
  3. * @version 1.0
  4. * @title HomeWork02
  5. * @description 7月16日作业-选择排序(降序)-选最大的
  6. * @create 2026/7/17
  7. */
  8. public class HomeWork02 {
  9. public static void main(String[] args) {
  10. /*
  11. 选出来最小的元素,和第1个元素进行交换
  12. 每一轮外层循环,只交换1次。
  13. */
  14. int[] arr={56, 23, 89, 12, 45, 67, 34, 78};
  15. //外层循环,i既是已排序区间的末尾边界,也是当前要确定的位置
  16. for (int i = 0; i < arr.length-1; i++) {
  17. //假设当前没有排序的区间的第1个元素是最大的。
  18. int maxIndex=i; //现在 maxIndex==i
  19. for (int j = i+1; j <arr.length; j++) { //通过一轮循环,选出来最大的元素的索引值
  20. if (arr[j]>arr[maxIndex]){
  21. maxIndex=j;
  22. }
  23. }
  24. //如果最大值不在i的位置,就就说明maxIndex!=i 说明上面的if语句里的代码起作用了
  25. //说明 数组中有比当前maxIndex对应的元素还大的元素。所以就要交换位置
  26. if (maxIndex!=i){
  27. arr[maxIndex]= arr[maxIndex]+arr[i];
  28. arr[i]=arr[maxIndex]-arr[i];
  29. arr[maxIndex]= arr[maxIndex]-arr[i];
  30. }
  31. }
  32. }
  33. }