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 }
  • 相关阅读:
    C# 排序技术研究与对比
    基于.net的通用内存缓存模型组件
    Scala学习笔记:重要语法特性
    一个初学者的指南,使用D3做数据绑定
    CLR垃圾回收的设计
    CLR线程概览(下)
    CLR线程概览(一)
    使用sos查看.NET对象内存布局
    .NET对象的内存布局
    MYC编译器源码之代码生成
  • 原文地址:https://www.cnblogs.com/zhangruifeng/p/9334169.html
Copyright © 2011-2022 走看看