JAVA一维数组的几种基本排序法

// 以下都以从小到大的写法

1.冒泡排序
原理: 将相邻左右两个元素依次比较大小,不符合条件就交换位置

for(int i = 0; i < arr.length ; i++){ //进行的轮数
	for(int j = 0; j < arr.length - 1; j++){
		if(arr[j] > arr[j+1]){    //前后比较,大的数交换到后边去
			int temp = arr[j];
			arr[j] = arr[j+1];
			arr[j+1] = temp;
		}
	}
}

2.选择排序
原理:找到数组中最小的元素将其放到第一位,找到第二小的元素将其放到第二位,以此类推

for(int i = 0; i < arr.length; i++){
	int min = i;  //保存最小数的下标
	for(int j = i ; j < arr.length; j++){
		if(arr[j] < arr[min]){  //将最小值下标保存到min
			min = j;
		}
	}
	int temp = arr[i];
	arr[i] = arr[min];
	arr[min] = temp;     //将最小值放到指定位置
}

3.插入排序
原理:将第一个元素视为有序数列,后边的元素依次从后向前进行比较并插入指定位置

for(int i = 1; i < arr.length ; i++){  //从第二个元素开始插入
	for(int j = i ; j > 0; j--){
		if(arr[j] < arr[j-1]){
			int temp =arr[j];
			arr[j] = arr[j-1];
			arr[j-1] = temp;   
		}
	}
}

4.快速排序
原理: 将第一个元素视为基准数,将比基准数大的数放在基准数右边,比基准数小的数放在基准数
左边,然后以基准数为中心,对其左右两边的数列依次进行此操作

public static void quickSort(int arr[],int left, int right){
	if(left >= right){  ///递归停止的条件
		return;
	}
	int i = left;
	int j = right;  //定义i,j指向开头结尾
	int temp = arr[left];  //保存基准数
	while( i < j){
		while( arr[j] >= temp && i < j){ //一定是j先开始从后向前找比基准小的数
 			j--;
		}
		while( arr[i] <= temp && i < j){  //j就位后i出发从前向后找比基准大的数
			i++;
		}
		if( i < j){    //交换
			int temp =arr[i];
			arr[i] = arr[j];
			arr[j] = temp;
		}
	}
	arr[left] = arr[i];
	arr[i] = temp;   //基准数归位
//此时第一轮结束

//开始递归
quickSort(arr, left , j-1);   //左边
quickSort(arr, j +1, right); //右边
}
  • 3
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值