冒泡排序(BubbleSort):
依次比较相邻的两du个数,将小数放在前面zhi,大数放在后面。即首先比较第dao1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再大于第2个数),将小数放前,大数放后,一直比较到最小数前的一对相邻数,将小数放前,大数放后,第二趟结束,在倒数第二个数中得到一个新的最小数。如此下去,直至最终完成排序。
由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。
外围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; } }
