冒泡排序,快速排序,选择排序。

package com.chai;

public class Bubble_sort {
	public static void main(String args[]) {
		//冒泡排序
		int[] arry= new int[]{31,32,43,42,35,43};//创建一个数组
		
		for(int w=0; w<arry.length-1;w++) {//循环arry的长度次数遍
			for(int q=0; q<arry.length-1-w;q++) {//随着外层循环次数减少而减少
				if(arry[q]>arry[q+1]) {//如果后面一个数比前面一个数大
					int temp=arry[q];
					arry[q]=arry[q+1];//将后面一个数给到前面一个数
					arry[q+1]=temp;//将前面一个数给到后面一个数
				}
			}
		}
		for(int i=0; i<arry.length; i++) {
			System.out.println(arry[i]);//将排序好的数组打印出来
		}

		System.out.println("===");
		int[] arr = { 49, 38, 65, 97, 23, 22, 76, 1, 5, 8, 2, 0, -1, 22 };
		quickSort(arr,0,arr.length-1);
		for(int i : arr) {
			System.out.println(i);
		}
		selectSort(arr);
		for(int w : arr) {
			System.out.println(w);
		}
		}
	

	//快速排序
		private static void quickSort(int[] arr, int low, int high) {
			int key=arr[low];//设置基准目标的值
			int start=low;//保存数值开始位置的初始值
			int end =high;//保存数组结束位置的初始值;
			while(start<end) {
				while(start<end&&arr[end]>=key) {//如果目标数比基准数大,则不断减少end的值,直至找到比基准小的数
					end--;
				}
				if(arr[end]<key) {//如果目标数小于基准数,则交换两个数的位置
					int temp=arr[end];

					arr[end]=arr[start];
					arr[start]=temp;
				}
				while(start<end&&arr[start]<=key) {//如果目标数比基准数小,则不断减少end的值,直至找到比基准小的数
					start++;
				}
				if(arr[start]>key) {//如果目标数大于基准数,则交换两个数的位置
					int temp=arr[start];

					arr[start]=arr[end];
					arr[end]=temp;
				}
			}
			 //这部分的数据都是小于准基数,通过递归在进行一趟快排
			if(end<high) {
				quickSort(arr,end+1,high);
			}
			if(start>low) {
				quickSort(arr,low,start-1);
			}
		}


		//选择排序
		public static void selectSort(int [] aa) {
			for(int a=0; a<aa.length-1;a++) {
				for(int b=a+1;b<aa.length;b++) {
					if(aa[b]<aa[a]) {//找到最小的数组,放到第一位。
						int temp=aa[b];
						aa[b]=aa[a];
						aa[a]=temp;
					}
				}
			}
		}
}

选择排序
在这里插入图片描述
冒泡排序
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
快速排序

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
冒泡排序快速排序都是常见的排序算法,它们各自有不同的优缺点。 冒泡排序的基本思想是通过相邻元素的比较和交换来将较大的元素逐渐“冒泡”到数组的末尾。具体步骤如下: 1. 从数组的第一个元素开始,依次比较相邻的两个元素,如果前一个元素大于后一个元素,则交换它们的位置。 2. 继续比较下一对相邻元素,重复上述操作,直到最后一对元素。 3. 重复以上步骤,每次比较的元素个数减少一,直到所有元素都排好序。 冒泡排序的优点是实现简单,代码易于理解和实现。然而,冒泡排序的缺点是效率较低,特别是在处理大规模数据时,时间复杂度为O(n^2),性能较差。 快速排序是一种分治法的排序算法,它通过选择一个基准元素将数组分成两个子数组,然后递归地对子数组进行排序。具体步骤如下: 1. 选择一个基准元素(通常选择第一个或最后一个元素)。 2. 将数组分成两个子数组,小于基准元素的放在左边,大于基准元素的放在右边。 3. 递归地对左右子数组进行快速排序。 4. 合并左右子数组和基准元素。 快速排序的优点是在平均情况下具有较高的效率,时间复杂度为O(nlogn)。它也是一种原地排序算法,不需要额外的空间。然而,快速排序的缺点是在最坏情况下(如已经有序的数组),时间复杂度可能达到O(n^2),性能下降。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值