/*
- 要求:
- 用三种方法对int[] arr = {6,34,5,1,8,14,3,15,21}进行排序
- 第一种:冒泡排序
- 思路:
第一步:比较相邻的元素。如果第一个比第二个大,就交换它们两个;
第二步:对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;
第三步:针对所有的元素重复以上的步骤,除了最后一个;
第四步;重复步骤1~3,直到排序完成。 - 第二种:选择排序
第一步:初始状态:无序区为R[1…n],有序区为空;
第二步;第i趟排序(i=1,2,3…n-1)开始时,当前有序区和无序区分别为R[1…i-1]和R(i…n)。
该趟排序从当前无序区中-选出关键字最小的记录 R[k],将它与无序区的第1个记录R交换,
使R[1…i]和R[i+1…n)分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区;
第三步:n-1趟结束,数组有序化了。 - 第三种:插入排序
思路:
第一步:从第一个元素开始,该元素可以认为已经被排序;
第二步:取出下一个元素,在已经排序的元素序列中从后向前扫描;
第三步:如果该元素(已排序)大于新元素,将该元素移到下一位置;
第四步:重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;
第五步:将新元素插入到该位置后;
重复步骤2~5。 - */
上代码…
public class ArraySortWay {
public static void main(String[] args) {
int[] arr1 = {6,34,5,1,8,14,3,15,21};
int[] arr2 = {6,34,5,1,8,14,3,15,21};
int[] arr3 = {6,34,5,1,8,14,3,15,21};
//选择排序
selectionSort(arr1);
//冒泡排序
bubbleSort(arr2);
//插入排序
insertionSort(arr3);
}
//冒泡排序法
private static void bubbleSort(int[] arr) {
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr.length-i-1;j++){
if(arr[j]>arr[j+1]){
int tmep = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmep;
}
}
}
System.out.println("冒泡排序开始.....");
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
System.out.println();
}
//选择排序
private static void selectionSort(int[] arr) {
int MinIndex,tem;
for(int i=0;i<arr.length-1;i++){
MinIndex = i;
for(int j=i+1;j<arr.length;j++){
if(arr[MinIndex]>arr[j]){
MinIndex = j;
}
}
if(MinIndex!=i){
tem = arr[MinIndex];
arr[MinIndex] = arr[i];
arr[i]=tem;
}
}
System.out.println("选择排序开始.....");
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
System.out.println();
}
//插入排序
private static void insertionSort(int[] arr) {
int preIndex ,current;
for(int i =1;i<arr.length;i++){
preIndex = i-1;
current = arr[i];
//在已排好序的i-1个元素的数组中,如果a[i]的值小于a[i-1]的值,那么把a[i-1]的值
// 往后移一位,然后赋值给a[i],在比较a[i-2]的值,循环下去,直到找到a[i]>a[preIndex]或者
//preIndex<0,找到当前a[preIndex]>a[i]的preIndex,把它放在preIndex+1的位置。
while(preIndex>=0 && arr[preIndex]>current){
arr[preIndex+1]=arr[preIndex];
preIndex--;
}
arr[preIndex+1]=current;
}
System.out.println("插入排序开始....");
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
System.out.println();
}
}