一、排序的具體應用
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;
}
}
