1、冒泡排序
//冒泡排序
package 排序算法;
public class Test {public static void main(String[] args) {int[] nums={34,4,56,17,90,65};for(int i=0;i<nums.length-1;i++){for(int j=0;j<nums.length-1-i;j++){ //比较轮数等于数列的长度-1if(nums[j]>nums[j+1]){nums[j]=nums[j]+nums[j+1];nums[j+1]=nums[j]-nums[j+1];nums[j]=nums[j]-nums[j+1]; }}}for (int x:nums){System.out.println(x);}}
}
2、选择排序
//选择排序算法
package 排序算法;
public class Test2 {public static void main(String[] args) {int[] nums={34,4,56,17,90,65};int minIndex=0;//用来记录每次比较的最小值下标for (int i=0;i<nums.length;i++){minIndex=i; //每轮假设一个最小值下标for(int j=i+1;j<nums.length;j++){if(nums[minIndex]>nums[j]){minIndex=j; }}//判断需要交换的数下标是否为自己if (minIndex!=i){nums[minIndex]=nums[minIndex]+nums[i];nums[i]=nums[minIndex]-nums[i];nums[minIndex]=nums[minIndex]-nums[i]; }}for (int n:nums){System.out.println(n);}}
}
3、插入排序
//插入排序算法package 排序算法;public class Test3 {public static void main(String[] args){int[] nums={34,4,56,17,90,65};for (int i=1;i<nums.length;i++){int temp=nums[i];int j=0;for(j=i-1;j>=0;j--){if (nums[j]>temp){nums[j+1]=nums[j];}else {break;}}if (nums[j+1]!=temp){nums[j+1]=temp;}}for (int x:nums){System.out.println(x);}}
}
4、二分查找排序
package 排序算法;
import java.util.*;
public class Test4{public static void main(String[] args){int[] num={10,20,50,65,86,90};int index=Arrays.binarySearch(num, 10);System.out.println("找到的数字下标是:"+index);}
}
//二分查找算法(折半查找)
package 排序算法;
import java.util.Scanner;;
public class Test4 {public static void main(String[] args){//必须保证数列是有序的int[] num = {10,20,50,65,86,90};int index=binarySearch(num, 22);System.out.println(index);}//二分查找public static int binarySearch(int[] num,int key){int start=0; //开始下标int end=num.length-1; //结束下标while(start<=end){int mid=(start+end)/2;if(num[mid]>key){end=mid-1;}else if (num[mid]<key) {start=mid+1;}else {return mid;}}return -1; }
}