Day562.冒泡排序&选择排序 -数据结构和算法Java
Posted 阿昌喜欢吃黄桃
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Day562.冒泡排序&选择排序 -数据结构和算法Java相关的知识,希望对你有一定的参考价值。
冒泡排序
一、基本介绍
二、流程图解
三、代码实现
/**
* @Author Achang
* @Date 2022/3/19 16:08
* 冒泡排序
**/
public class BubbleSort
public static void main(String[] args)
int arr[] = 3,9,-1,10,-2;
//临时变量
int temp = 0;
boolean flag = false;//表示是否进行过交换
//第一趟排序
for (int i = 0; i < arr.length - 1 - 0; i++)
//如果前面的数字比后面大,则交换
if (arr[i] > arr[i+1])
temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
//第二趟排序
for (int i = 0; i < arr.length - 1 - 1; i++)
//如果前面的数字比后面大,则交换
if (arr[i] > arr[i+1])
temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
//第三趟排序
for (int i = 0; i < arr.length - 1 - 2; i++)
//如果前面的数字比后面大,则交换
if (arr[i] > arr[i+1])
temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
//第四趟排序
for (int i = 0; i < arr.length - 1 - 3; i++)
//如果前面的数字比后面大,则交换
if (arr[i] > arr[i+1])
temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
//===========================================================================
//整合上面的为一个for循环
for (int i = 0; i < arr.length-1; i++)
for (int i1 = 0; i1 < arr.length - i; i1++)
//如果前面的数字比后面大,则交换
if (arr[i] > arr[i+1])
temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
//优化,当一趟下来没有一次交换动作,则就可以提前结束
for (int i = 0; i < arr.length-1; i++)
for (int i1 = 0; i1 < arr.length - i; i1++)
//如果前面的数字比后面大,则交换
if (arr[i] > arr[i+1])
flag = true;
temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
if (!flag)
break;
else
flag = false;//当上次交换了,需要重置
选择排序
一、选择排序思路分析图
二、选择排序思路图解
三、代码实现
/**
* @Author Achang
* @Date 2022/3/19 16:46
* 选择排序
**/
public class SelectSort
public static void main(String[] args)
int arr[] = -90,66,-1,3,4,0,44,22,50;
selectSort(arr);
System.out.println(Arrays.toString(arr));
public static void selectSort(int arr[])
int temp;
for (int i = 0; i < arr.length - 1; i++)
for (int i1 = i+1; i1 < arr.length; i1++)
if (arr[i] > arr[i1])
temp = arr[i];
arr[i] = arr[i1];
arr[i1] = temp;
以上是关于Day562.冒泡排序&选择排序 -数据结构和算法Java的主要内容,如果未能解决你的问题,请参考以下文章
day6 反射,hashlib模块,正则匹配,冒泡,选择,插入排序