选择排序:
public void sort(int[] i) { //排序完是从小到大 //只需要排序 i.length - 1 轮 //54321 //14325 //12345 for (int j = 0; j < i.length - 1; j++) { //外层循环保证循环多少次 int min = i[j]; //假定最小值为当前值 int temp = j; //记录最小值的下标 // System.out.println("j = " + j); // System.out.println("min = " + min); // System.out.println("temp = " + temp); for (int z = j; z < i.length; z++) { //开头的位置可以后移,所以跟着j走 //内层循环干活,找最小值并交换 // System.out.println("\tz = " + z); if(i[z] < min) { min = i[z]; // System.out.println("\t\tmin = " + min); temp = z; // System.out.println("\t\ttemp = " + temp); } if(z == i.length - 1) { //循环到最后一个位置了,上面那个if也走过了 if(min != i[j]) { //如果最小值是i[j]就不用动位置,所以这里判断不是i[j]的才调换位置 i[temp] = (i[temp] ^ i[j]); i[j] = (i[temp] ^ i[j]); i[temp] = (i[temp] ^ i[j]); } } } } }
冒泡排序
public void sort(int[] i) { for(int j = 0; j < i.length - 1; j++) { //只要做数组长度 - 1 轮就可以排序完毕 for (int m = i.length - 1, n = 0; m >= 1; m--,n++) { //m是判断遍历到哪个位置截止 //n是保证从0开始 //每一轮遍历的数量都比上一轮遍历的数量 - 1 //假设数组长度为5 //第一轮应该遍历从1 - 5(0 - 4) 5 //第二轮应该遍历从1 - 4(0 - 3) 4 //第四轮应该遍历从1 - 2(0 - 1) 1 //实属是自己把自己绕晕了…… if(i[n + 1] < i[n]) { //交换 i[n] = (i[n] ^ i[n + 1]); i[n + 1] = (i[n] ^ i[n + 1]); i[n] = (i[n] ^ i[n + 1]); } } } }