java编程入门选择排序,在java中选择排序

1,在java中选择排序这里错了arr[index=1]=arr[index];应该是arr[index+1]=arr[index];【java编程入门选择排序,在java中选择排序】
2,Java 选择排序 简单的说,你开始给 k 赋值就是等于 i 的,如果 intArrays[ k ]<intArrays[ j ]就不执行if条件句,k还是等于i只有当 intArrays[ k ]>intArrays[ j ] 执行if的执行语句 , 把 j 赋值给 k 这样k就不等于i了所以 if(k != i) 是判断k的值有没有发生变化,即判断intArrays[ k ]是否大于intArrays[ j ]
3 , java选择排序所谓的选择排序就是每次循环,选择出未排序过的数中最大或者最小的数将其放在最前面 。在这个程序中 , 第一个for循环 :for (b = 0; b < a.length; b++),开始b=0,其实就是我们假设a[b]即a[0]是最大的数 。再看第二个for循环:for (c = b + 1; c < a.length; c++),此时c=1 , 也就是我们从a[1]开始遍历数组,一直到数组末尾,而剩下代码 if(a[c]>a[b]){ d=a[b]; a[b]=a[c]; a[c]=d; }的意思就是 , 一旦发现a[0]后面有比a[0]还大的数,就立即将这个数与a[0]交换位置,这样就确保了第一轮for循环之后a[0]是这个数组中最大的数了 。所以此时b=1了 , 也就是a[0]不需要再考虑,就只考虑从a[1]开始的数组了 。剩下的排序也就和a[0]一样 , 依次类推 。如图
4,java关于选择排序for(int j=i+i;j<IntArray.length;j++)错误应为 int j=i+1;for(int j=i+i;j<IntArray.length;j++)应该是这句有错 简单的说 , 你开始给 k 赋值就是等于 i 的,如果 intarrays[ k ]<intarrays[ j ]就不执行if条件句 , k还是等于i只有当 intarrays[ k ]>intarrays[ j ] 执行if的执行语句,把 j 赋值给 k 这样k就不等于i了所以 if(k != i) 是判断k的值有没有发生变化 , 即判断intarrays[ k ]是否大于intarrays[ j ]int temp;for(int i=0;i<IntArray.length-1;i++)if(IntArray[j]<IntArray[j+1])temp=IntArray[j];IntArray[j]=IntArray[j+1];IntArray[j+1]=temp;}}}这是冒泡排序,不是选择排序 for(int i=0;i<IntArray.length;i++)改为 for(int i=0;i<IntArray.length-1;i++){for(int j=i+1;j<IntArray.length;j++)5 , 初学者用java程序写一个选择排序算法选择排序法:public class TSortpublic static void main(String args[])int a[]=for(int i=0;i<a.length-1;i++)int t;for(int j=i+1;j<a.length;j++)if(a[i]>a[j])t=a[i];a[i]=a[j];a[j]=t;}}}for(int i=0;i<a.length;i++)System.out.print(a[i]+"");}}}给个简单明了的:static void selectSort(int a[])//整数数组的简单选择排序算法int i,j=0;for(i=0;i<a.length;i++)//第i趟for(j=i+1;j<a.length;j++)if(a[i]>a[j])//交换两数位置a[i]^=a[j];a[j]^=a[i];a[i]^=a[j];}}package Utils.Sort;/** *@author Linyco *利用选择排序法对数组排序,数组中元素必须实现了Comparable接口 。*/public class ChooseSortimplements SortStrategy/***对数组obj中的元素以选择排序算法进行排序*/public void sort(Comparable[] obj)if (obj == null)throw new NullPointerException("The argument can not be null!");}Comparable tmp = null;int index = 0;for (int i = 0; i < obj.length - 1; i++)index = i;tmp = obj[i];for (int j = i + 1; j < obj.length; j++)if (tmp.compareTo(obj[j]) > 0)tmp = obj[j]; //要每次比较都记录下当前小的这个值!index = j;}}//将最小的元素交换到前面tmp = obj[i];obj[i] = obj[index];obj[index] = tmp;}} }挺好的啊,我还真不怎么会这个东西,叫数据结构吧有时间好好看看

    推荐阅读