java选择排序下标交换和下标对应的值的交换

class a4
{
    public static void main(String[] args)
    {
        int [] arr = {1, 8, 3, 6, 5, 2};

        printNumber(arr);
        sort2(arr);
        printNumber(arr);
    }
    public static void swap(int[] arr, int a, int b)
    {
        int temp = arr[a];
        arr[a] = arr[b];
        arr[b] = temp;
    }
    public static void sort2(int[] arr)
    {

        for(int i=0; i<arr.length-1; i++)
        {
            int num = arr[i];
            int index = i;

            for(int j=i+1; j<arr.length; j++)
            {
                if(num>arr[j])
                {
                    num = arr[j];
                    index = j;
                }
            }
            if(i!=index)
            swap(arr, num, arr[i]);
        }

    }
    public static void printNumber(int [] arr)
    {
        for(int i=0; i<arr.length; i++)
        {
            System.out.print(arr[i]+" ");
        }
        System.out.println();
    }
}

将下标对应的值的交换----改为下标的交换

数组的选择排序成功,为什么会提示数组索引访问越界?

原文地址:https://www.cnblogs.com/lian-cheng/p/10007499.html

时间: 2024-08-04 02:35:03

java选择排序下标交换和下标对应的值的交换的相关文章

java选择排序

/** * Created by rabbit on 2014-5-9. */ class ArrayTest2 {     public static void SelectSort(int [] arr) //定义选择排序的方法     {         for (int x=0;x<arr.length;x++)         {             for (int y=0;y<arr.length-1;y++)             {                 if

java选择排序和冒泡排序

public class Choose{ public static void main(String[] args){  int[] arr = {4,6,7,3,1,6};   Select a = new Select();   a.sort1(arr);   System.out.println("选择排序后:");   for(int i=0;i<arr.length;i++){    System.out.print(arr[i]);    }    a.sort2(

Java选择排序算法

package com.jckb; /**选择排序 * * @author gx *算法原理: *第一个数和后面每个数进行比较,如果大于后面的数就进行位置交换, *第一次比较结束后得到了最小值 */ public class ChoiceSort { public static void main(String[] args) { int []arr={34,19,11,109,3,56}; for(int i =0;i<arr.length-1;i++){ for(int j=i+1;j<a

Java选择排序,插入排序,快速排序

public class Test { public static void main(String[] args) { int a[] = { 1, 2, 3, 4, 5 }; // 选择排序(a); // 插入排序(a); quicksort(a, 0, a.length - 1); System.out.print("排序后:"); for (int n : a) { System.out.print(n + " "); } } static void 选择排

java 选择排序与冒泡排序

选择排序与冒泡排序的特点与区别 ++++++++++++++++++++++++++++++++++++++++++++++ 选择排序 这一种简单的排序方法,它的基本思想是:R[n]第一次从R[0]~R[n-1]中选取最小值,与R[0]交换;第二次从R[1]~R[n-1]中选取最小值,与R[1]交换;...., 第i次从R[i-1]~R[n-1]中选取最小值,与R[i-1]交换;.....,第n-1次从R[n-2]~R[n-1]中选取最小值,与R[n-2]交换;总共通过n-1次,得到一个按排序码

java算法(一) 直接选择排序

一.基本概念 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置(注:要把最大最小的元素和起始的元素交换), 然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾.以此类推,直到所有元素均排序完毕. 二.算法特点 是否稳定: false 平均时间复杂度:O(n^2) 最差时间复杂度:O(n^2) 最优时间复杂度:O(n^2) package com.jiafuwei.java; /** * java 选择排序 * @author jfw * */ public

Java算法-选择排序

(转载出处) 选择排序的基本思想是遍历数组的过程中,以 i 代表当前需要排序的序号,则需要在剩余的 [i…n-1] 中找出其中的最小值,然后将找到的最小值与 i 指向的值进行交换.因为每一趟确定元素的过程中都会有一个选择最大值的子流程,所以人们形象地称之为选择排序. 选择排序是一种简单直观的排序方法,每次寻找序列中的最小值,然后放在最末尾的位置. 举个实例来看看: 初始: [38, 17, 16, 16, 7, 31, 39, 32, 2, 11] i = 0: [2 , 17, 16, 16,

排序算法(二)——选择排序及改进

选择排序 基本思想 冒泡排序中有一个缺点,比如,我们比较第一个数a1与第二个数a2的时候,只要a1比a2大就会交换位置,但是我们并不能确定a2是最小的元素,假如后面还有比它更小的,该元素还会与a2再次进行交换,而且这种交换有可能发生多次才能确定a2的最终位置. 选择排序可以避免这种耗费时间的交换操作,从第一个元素开始,扫描整个待排数组,找到最小的元素放之后再与第一个元素交换位置,然后再从第二个元素开始,继续寻找最小的元素与第二个元素交换位置,依次类推. java实现 //选择排序 public

选择排序及改进

选择排序 基本思想 冒泡排序中有一个缺点,比如,我们比较第一个数a1与第二个数a2的时候,只要a1比a2大就会交换位置,但是我们并不能确定a2是最小的元素,假如后面还有比它更小的,该元素还会与a2再次进行交换,而且这种交换有可能发生多次才能确定a2的最终位置. 选择排序可以避免这种耗费时间的交换操作,从第一个元素开始,扫描整个待排数组,找到最小的元素放之后再与第一个元素交换位置,然后再从第二个元素开始,继续寻找最小的元素与第二个元素交换位置,依次类推. java实现 [java] view pl