一、排序的具体应用
1、淘宝商品价格排序:商品按价格高低排序后显示;租房时看价格,从低到高;
2、微博热搜排行榜:排序后,最高的十个关键字,上热搜
3、QQ好友列表:按照好友名字的排序(涉及字符排序)
4、超星移动图书馆热书榜:排序后,最高的十本书为热书
https://blog.csdn.net/dingpiao190/article/details/72674199
二、选择排序——取商品的价格
1.升序
public class choose { public static void main(String[] args) { // double[] arr = {50.60,65.344,42.9,94,12,33,61}; //float的数后面必须加f //选择排序 /* 思路:1.拿第一个元素与后面的比较,把小的放在第一个,进行位置互换 2.拿第二个元素与后面的比较,把小的放在第二个,进行位置互换 ...... */ //1.升序 //取商品的价格 float[] arr2 = {50,61.10f,72.9f,80,77.777f,45.31f}; //控制排序的次数n for (int i = 0; i <arr2.length -1 ; i++) { //取第一个数为最小的数的位置 int min= i; //寻找最小的数 for(int j = i+1 ;j <arr2.length ;j++){ if (arr2[min] > arr2[j]){ //记录目前能找到的最小值元素的下标 min = j; } } //将找到的最小值和i位置所在的值进行交换 if (i != min){ float temp = arr2[i]; arr2[i] = arr2[min]; arr2[min] = temp; } } //第 i轮排序的结果为 System.out.print("排序后的结果为:"+ Arrays.toString(arr2));
}
}
2.降序
//2.降序 //取商品的价格 float[] arr2 = {50,61.10f,72.9f,80,77.777f,45.31f}; //控制排序的次数n for (int i = 0; i <arr2.length -1 ; i++) { //取第一个数为最小的数的位置 int min= i; //寻找最小的数 for(int j = i+1 ;j <arr2.length ;j++){ if (arr2[min] < arr2[j]){ //记录目前能找到的最小值元素的下标 min = j; } } //将找到的最小值和i位置所在的值进行交换 if (i != min){ float temp = arr2[i]; arr2[i] = arr2[min]; arr2[min] = temp; } } //第 i轮排序的结果为 System.out.print("排序后的结果为:"+ Arrays.toString(arr2)); } }
三、冒泡排序——给同学们按身高排座位
public class PaiXu { public static void main(String[] args) { //冒泡排序——给同学们按身高排座位 /* 思路:1.第一个与第二个比,大的放第二个 2.第二个与第三个比,大的放第三个 */ int[] arr = {178, 162,174,166,184,171,175, 177,169}; //控制循环次数n for (int i = 0;i < arr.length;i++){ //每排序依次,就少一次 for (int j = 0;j < arr.length -1-i ;j++){ if (arr[j]> arr[j+1]){ int temp = arr[j]; arr[j]= arr[j+1]; arr[j + 1] = temp; } } } System.out.println("排序后:"); //数组输出 System.out.println(Arrays.toString(arr)); } }
四、插入排序
1.基本排序方法
public class ChaRu { public static void main(String[] args) { //插入排序 /* 思路: 1.第一个数字默认已经排序 2.取第二个数与第一个比较,然后排序 3.取第三个数与前两个数比较,然后比较 ...... */ int[] arr = {345,78,98,67,56,77}; int j; //第一层循环:控制比较次数 for (int i = 1; i < arr.length; i++) { int temp = arr[i]; j = i; while (j > 0 && temp < arr[j - 1]) { arr[j] = arr[j - 1]; //向后挪动 j--; } //存在更小的数,插入 arr[j] = temp; } System.out.println(Arrays.toString(arr)); } }
2.给中文姓名排序
public class NameSort { public static void main(String[] args) { String[] a = {"王五", "李四", "张三", "刘六", "白一", "苦二"}; getSortOfChinese(a); /*for (int i = 0; i < a.length; i++) { System.out.println(a[i]); }*/ System.out.println(Arrays.toString(a)); } //定义排序函数 public static String[] getSortOfChinese(String[] a) { // Collator 类是用来执行区分语言环境这里使用CHINA Comparator cmp = Collator.getInstance(java.util.Locale.CHINA); // JDKz自带对数组进行排序。 Arrays.sort(a, cmp); return a; } }
3.英文名排序
public class NameSort2 { public static void main(String[] args) { String[] a = {"Andy", "VBay", "Cbby", "Jim", "Tom", "Harry"}; getSortOfChinese1(a); /*for (int i = 0; i < a.length; i++) { System.out.println(a[i]); }*/ System.out.println(Arrays.toString(a)); } //定义排序函数 public static String[] getSortOfChinese1(String[] a) { // Collator 类是用来执行区分语言环境这里使用ENGLISH Comparator cmp = Collator.getInstance(Locale.ENGLISH); // JDKz自带对数组进行排序。 Arrays.sort(a, cmp); return a; } }