排序算法:选择排序,直接插入排序,冒泡排序

package com.Algorithm.Search_Sort;

import java.util.Arrays;

public class Sort {
	
	public int array[] = {99,34,76,92,34,17,77,41,40,36,6};
	
	//冒泡排序法:比较条件为array[j]>array[j+1]为稳定排序,比较条件为array[j]>=array[j+1]为不稳定排序
	public void BubbleSort(){
		//进行N-1轮
		for(int i=0;i<array.length-1;i++){
			//每轮进行N-1-i次比较
			for(int j=0;j<array.length-1-i;j++)
				if(array[j]>array[j+1]){
					int temp=array[j];
					array[j]=array[j+1];
					array[j+1]=temp;					
				}			
		}
		System.out.println("冒泡排序法:"+Arrays.toString(array));
	}
	
	//选择排序法:不稳定的排序方法
	public void SelectSort(){
		//
		for(int i=0;i<array.length-1;i++){ 
			//假设每轮的第一个数是待排序列的最小值,记录最小值的数组下标
			int minIndex=i;
			//从待排数组中找到最小值,记录真正最小值下标
			for(int j=i+1;j<array.length;j++){
				if(array[j] < array[minIndex]){
					minIndex=j;
				}
			}
			//原第一个 与 最小值 交换位置
			int temp=array[i];
			array[i]=array[minIndex];
			array[minIndex]=temp;
		}
		System.out.println("选择排序法:"+Arrays.toString(array));
		
		
	}
	
	//插入排序法:稳定排序
	public void InsertSort(){
		//进行N-1轮
		for(int i=1;i<array.length;i++){
			//记录下当前要插入的数及其下标
			int temp=array[i];
			int j=i;
			//从最后一位开始,然后与其前面一位做比较,如果比其小,就覆盖
			while(j<0 && temp<array[j-1]){
				array[j]=array[j-1];
				j--;
			}
		}
		System.out.println("插入排序法:"+Arrays.toString(array));
		
	}
	
	//三种打印int数组的方法
	public void print(){
		//Arrays工具类中toString静态方法遍历
		System.out.println(Arrays.toString(array));
		
		//正常for循环遍历
		for(int i=0;i<array.length;i++){
			System.out.print(array[i]+" ");
		}
		
		//foreach语句遍历
		for(int j:array){
			//这里的j不再是下标的意思,而是array中遍历取出的每个数
			//如果输出array[j],大概率会出现数组越界的错误
			System.out.print(j+" ");
		}

	}
	
	public static void main(String[] args) {
		Sort sort=new Sort();
		sort.BubbleSort();//冒泡排序法
		sort.SelectSort();//选择排序法
		sort.InsertSort();//插入排序法
		
	}
}

输出结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值