冒泡排序-优化(狂神说版)

编程入门 行业动态 更新时间:2024-10-10 15:25:53

冒泡排序-优化(<a href=https://www.elefans.com/category/jswz/34/1312049.html style=狂神说版)"/>

冒泡排序-优化(狂神说版)

1.思路:

冒泡排序:比较数组中,两个相邻的元素,如果第一个数比第二个数大,我们就交换他们的位置。

2.做法

2.1定义冒泡排序的方法

我们要知道给数组排序那么返回值就一定是一个数组,方法名就取sort排序。参数我们要对谁做什么,对数组进行排序,参数自然就是数组。

public static int[] sort(int[] array) {}

于此同时还需要定义一个中间变量来作为交换位置的媒介。

int temp;

2.2.循环

比较两个数的大小不止一次比较,多次就一定会用到循环,那就一定要想到for循环,至于为什么要用for循环就不得而知了,for循环还需要用到两次,为什么要用到两次?因为第一次是用来判断我们要走多少次循环,而且循环的次数一定要是数组长度减去一个1;即array.length - 1。有人又问为啥要减去一个一,因为不减去一个1就会数组下标越界的错误。

内层循环才是真正的比较;这里的array.length - 1 - i是表示比较的次数不断减少,需要再减去一个i,因为每一次遍历都会得出一个最大的数字。

for (int j = 0; j < array.length - 1 - i; j++) {if (array[j + 1] > array[j]) { // 如果比较数组中第二个数比第二个数比第一个数大。temp = array[j];  // 则先把前一位数和temp 交换位置。array[j] = array[j + 1];// 再把后一位和前一位交换位置。array[j + 1] = temp;// 最后把temp放回原来的位置。flag = true;}

交换完成把这个数组返回出去就好了。

return array;

2.3.Main方法

要对数组排序首先要有数组,这个步骤可以在写好排序方法之后再定义,定义一个数组长度为19的名字为a数组。接着调用sort数组冒泡排序方法,把需要对排序的数组传进去,返回一个变量也叫sort。最后通过Arrays类中的toString方法把数组显示出来不然只会出现一串数字。

public static void main(String[] args) {int[] a = {2, 3, 1, 8, 6, 2, 7, 10, 20, 100, 200, 50, 60, 10, 205, 625, 165, 325, 845}; // 定义一个数组。int[] sort = sort(a); // 调用sort排序的方法,然后把需要排序的数组名字‘a’传进去。System.out.println(Arrays.toString(sort)); // 使用Arrays类中的toString方法把数组显示出来不然只会出现一串数字。}

3.源代码

import java.util.Arrays;public class Main {/*1.冒泡排序:比较数组中,两个相邻的元素,如果第一个数比第二个数大,我们就交换他们位置。2.每一次比较,都会产生出一个最大,或者最小的数数。3.下一轮则可以少一次排序。4.一次循环,直到结束!*/public static void main(String[] args) {int[] a = {2, 3, 1, 8, 6, 2, 7, 10, 20, 100, 200, 50, 60, 10, 205, 625, 165, 325, 845}; // 定义一个数组。int[] sort = sort(a); // 调用sort排序的方法,然后把需要排序的数组名字‘a’传进去。System.out.println(Arrays.toString(sort)); // 使用Arrays类中的toString方法把数组显示出来不然只会出现一串数字。}public static int[] sort(int[] array) {//      定义一个临时变量作为交换位置的中间变量。int temp;//    外层循环,判断我们这个要走多少次。for (int i = 0; i < array.length - 1; i++) {boolean flag = false; // 通过flag标志位减少没有意义的比较。//      内层循环,比价判断这两个数,如果一个数比第二个数大,则交换位置。for (int j = 0; j < array.length - 1 - i; j++) {if (array[j + 1] > array[j]) { // 如果比较数组中第二个数比第二个数比第一个数大。temp = array[j];  // 则先把前一位数和temp 交换位置。array[j] = array[j + 1];// 再把后一位和前一位交换位置。array[j + 1] = temp;// 最后把temp放回原来的位置。flag = true;}}//      如果没有进行比较的话,咱们就进行结束了。if (flag == false) {// 退出可,跳出循环,最后一轮就不用走了,这样也是可以降低时间成本的。break; // break ,跳出内层循环。}}return array; // 最后把这个数组给返回出去。}
}

4.运行结果

写在最后

人生就像一本书,傻瓜们走马看花似地随手翻阅它,聪明的人用心地阅读它。因为他知道这本书只能读一次。——保罗

更多推荐

冒泡排序-优化(狂神说版)

本文发布于:2023-07-28 20:55:34,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1311974.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:狂神说版

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!