public class sortClass {
public static void sort(int[] data) {
for(int j = 0; j<data.length - 1; j++) {
int m=j ;
for (int k = j + 1; k < data.length; k++) {
if (data[k]< data[m]) {
m= k;
/*compare values*/
}
}
/*Assign to temp*/
int temp = data[m];
data[m] = data[j];
data[j] = temp;
}
}
public static void main(String[] args) {
int [] a = {6,3,2,5,4,1};
sort(a);
}
}
public class sortClass {
public static void sort(int[] data) {
for(int j = 0; j<data.length - 1; j++) {//循环n次,比如代码里a有6个数,这就循环6次
int m=j ; //m用来记录从第j个数开始往后所有数中最小的数的索引,也就是index,
for (int k = j + 1; k < data.length; k++) {//对于每一个j,循环n-1次,比如j循环6次,那这个内循环就循环6*(6-1)次
if (data[k]< data[m]) { //判断从第j个数后面所有数字是否小于第j个数
m= k; //如果第j个数后面的数比较小,那就记录这个较小的数的引索
/*compare values*/
}
} //内层循环到这结束,目的在于找到第j个数后面,最小的数的引索
/*Assign to temp*/
//找到后面最小的数,那就可以交换两个数,这样,小的就在前,大的就在后了。以下三句实现了交换这两个数的功能。
int temp = data[m]; //用temp记录 data[m]的值,也就是较小的值
data[m] = data[j]; //data[m]的值被temp存下了,那它现在就可以存较大的数,以实现交换,于是存 data[j]
data[j] = temp; //data[j]原来的值已经给data[m],那现在就可以存较小的值了,于是存了temp
}
}
//外层循环在这结束。为啥要外层循环呢?
//因为,内层循环只能实现从某一个数开始,找到后面最小值,并把他俩交换。那就需要在一层循环,把这个操作套用到所有的值上。
//于是所有的值都取找它后面最小值并与其交换。这样就实现了排序
public static void main(String[] args) {
int [] a = {6,3,2,5,4,1};
sort(a);
}
}
你使用的这个排序方法是:
先将数组中的第一个元素取出,与第一个元素后面的数据进行比较(你这个是从小到大的排序方法),与数组后面的数据进行比较,将最小的数据放在第一个(data[0]),r
然后依次类推,取第二个数据与后面的比较,将倒数第二小的数据放在data[1]上,一直这样,数据变的有序。
public class sortClass {
public static void sort(int[] data) {
for(int j = 0; j<data.length - 1; j++) //这边数组的大小data.length-1,是防止后面的k中j-1超出数据上界
{
int m=j ;
for (int k = j + 1; k < data.length; k++) //这里是将上面数组中取出的数据的数据与其后面的数据进行比较
{
if (data[k]< data[m])
{
m= k;
/*compare values*/
}
}
/*Assign to temp*/
//当比较结束后将数组中的数据进行交换
int temp = data[m];
data[m] = data[j];
data[j] = temp;
}
}
public static void main(String[] args) {
int [] a = {6,3,2,5,4,1};
sort(a);
}
}