我写了三种方法,就当我面试前的练手:lol//方法一,采用冒泡排序法,两个之间的排序,相邻两个比较,大的放后面,每次循环完最大的放最后
public class ArraySortDemo{
public static void main(String[] args) {
int[] arr = {1,4,3,87,43,56,22,-14};
getSort(arr);
}
public static void getSort(int[] arr){
//外循环仅仅提供内循环循最终能够比较到的最大角标
for(int i =0;i<arr.length;i++){
//整个循环都是内循环来比较,外循环只提供比较到的位置,这里注意j=arr.length-i-1
for(int j =0;j<arr.length-i-1;j++){
//进行换位
if(arr[j]>arr[j+1]){
int temp =arr[j+1];
arr[j+1]=arr[j];
arr[j]=temp;
}
}
}
//应为下面这个循环代码太长,就封装在宁外一个方法里,这样代码显得简单
getSort2(arr);
}
public static void getSort2(int[] arr){
// 按数组的格式输出,这样好看些嘛。
System.out.print("[");
// 遍历进行过 排序操作后的数组
for(int m = 0;m<arr.length-1;m++){
// 写着写着每一步就都出来了,发现最后多个标点,要去掉
System.out.print(arr[m]+",");
}
System.out.print(arr[arr.length-1]);
System.out.print("]");
}
}
//方法二:采用选择排序,从开始角标跟以后的每个角标比较,最小的放第一个
public class ArraySortDemo2 {
public static void main(String[] args) {
int[] arr = {1,4,3,87,43,56,22,-14};
getSort(arr);
}
private static void getSort(int[] arr) {
//外循环控制开始进行与后面元素比较的角标位
for(int i =0;i<arr.length-1;i++){
//内循环控制后面要进行比较的元素角标,这里要注意的是j=i+1;
for(int j =i+1;j<arr.length;j++){
if(arr[i]>arr[j]){
int temp = arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
getSort2(arr);
}
private static void getSort2(int[] arr) {
System.out.print("[");
for(int m =0;m<arr.length-1;m++){
System.out.print(arr[m]+",");
}
System.out.print(arr[arr.length-1]);
System.out.print("]");
}
}
//第三种方法:使用工具类快速操作
import java.util.Arrays;
public class ArraySortDemo3{
public static void main(String[] args) {
int[] arr = {1,4,3,87,43,56,22,-14};
getSort(arr);
}
private static void getSort(int[] arr) {
//Arrays是util包下面一个操作数组(例如搜索和排序)的静态功能类,sort()方法提供排序升序排序
Arrays.sort(arr);
System.out.print("[");
for(int i =0; i<arr.length-1;i++){
System.out.print(arr[i]+",");
}
System.out.print(arr[arr.length-1]);
System.out.println("]");
}
}
|