LetCode第912题 排序数组之冒泡排序
  JMz8bAJYIKmC 2023年12月10日 13 0


冒泡排序(BubbleSort):

依次比较相邻的两du个数,将小数放在前面zhi,大数放在后面。即首先比较第dao1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再大于第2个数),将小数放前,大数放后,一直比较到最小数前的一对相邻数,将小数放前,大数放后,第二趟结束,在倒数第二个数中得到一个新的最小数。如此下去,直至最终完成排序。

  由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。

  

LetCode第912题 排序数组之冒泡排序_leetcode

外围for中i可看做数组循环的下标,从第一个数开始,到最后一个数结束。
里面的for中j是数组内从第一个数开始与右边的数相比,(由大到小)大的往左移一位,以此类推,j<data.length-1-i ,这是j的自增范围,因为i循环一次比过后会有一个数最大要排除掉,剩下的再比较!

912题 排序数组: 给你一个整数数组 nums,请你将该数组升序排列。
示例 1:

输入:nums = [5,2,3,1]
输出:[1,2,3,5]
示例 2:

输入:nums = [5,1,1,2,0,0]
输出:[0,0,1,1,2,5]
 

提示:

1 <= nums.length <= 50000
-50000 <= nums[i] <= 50000

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/sort-an-array

class Solution {
    int tem=0;
    public int[] sortArray(int[] nums) {
        for(int i=0;i<nums.length;i++){
            for(int j=0;j<nums.length-1-i;j++){
                
                if(nums[j]>nums[j+1]){
                    tem=nums[j+1];
                    nums[j+1]=nums[j];
                    nums[j]=tem;
                }
            }
        }
        return nums;
    }
}

但是呢 竟然超时限制了 ,如果大家有更好的写法不如发表一下,学习学习!!!

class Solution {
    
    public int[] sortArray(int[] nums) {
        for(int j=nums.length-1;j>0;j--){
            for(int i=1;i<=j;i++){
                if(nums[i-1]>nums[i]){
                    swap(nums,i,i-1);
                }
            }
        }
        return nums;
    }
    private void swap(int[]nums,int i,int j){
        int temp=nums[i];
        nums[i]=nums[j];
        nums[j]=temp;
            
    }
}



【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月10日 0

暂无评论

推荐阅读
JMz8bAJYIKmC