当前位置: 代码迷 >> 综合 >> Java实现排序算法(冒泡排序、选择排序、插入排序、二分查找排序)
  详细解决方案

Java实现排序算法(冒泡排序、选择排序、插入排序、二分查找排序)

热度:13   发布时间:2023-12-16 01:44:12.0

 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;	}
}