zoukankan      html  css  js  c++  java
  • JAVA实现--基础算法FOR选择排序

    首先 实现简单的选择排序。

    简单排序的思路很简单,就是通过遍历(数组的length次)的数组,每次遍历找出最小的放到数组的第一个位置,下次遍历时就不用考虑第0位置的数从第1的位置开始找1到length中最小的数。。。

    实现最简单的选择排序

     1    //实现选择排序的方法
     2     public static int[] selSort(int[] arr){
     3         //先遍历数组
     4         for(int i = 0;i < arr.length;i++){
     5             //在每次遍历时进行比较
     6             for(int j = i;j < arr.length;j++){
     7                 //如果有元素大于后面的元素进行交换
     8                 if(arr[i] > arr[j]){
     9                     int temp = arr[i];
    10                     arr[i] = arr[j];
    11                     arr[j] = temp;
    12                 }
    13             }
    14         }
    15         //将排序后的结果返回
    16         return arr;
    17     }

    对选择排序进行优化,在这个排序中,每次找到比原数小的数就需要进行交换这样会造成资源的浪费,我们可以先保存(当前)第一位数字,用它和其它数去比较,找到最大(或者小)的那个数的下标,在循环执行完毕后看这个数字是不是被交换过,如果交换过那就交换下标对应的数值。

     1     public static int[] selSort2(int[] arr){
     2         //依旧先进行遍历
     3         for(int i = 0;i < arr.length;i++){
     4             //在每次遍历时保存当前位置的下标
     5             int index = i;
     6             //在每次遍历时进行比较
     7             for(int j = i;j < arr.length;j++){
     8                 //这里必须时index 而不是 i ,因为index可以改,i不能改变
     9                 if(arr[index] > arr[j])
    10                     index = j;
    11             }
    12             //如果进行过交换那么 就交换它们的值
    13             if(index != i){
    14                 int temp = arr[i];
    15                 arr[i] = arr[index];
    16                 arr[index] = temp;
    17             }
    18         }
    19         //将交换后的结果返回
    20         return arr;
    21 }
  • 相关阅读:
    GridView取不到值的问题总结
    DataGridView中的Combobox的应用
    .NET开发的一些积累
    .net字符串内存的分配
    冒泡排序
    字段自动递增的数据库建表的SQL写法
    [数据库]简单SQL语句总结
    C#知识
    sql语句大全
    白盒测试和黑盒测试
  • 原文地址:https://www.cnblogs.com/zhangruifeng/p/9334169.html
Copyright © 2011-2022 走看看