此博客链接:https://www.cnblogs.com/ping2yingshi/p/12604536.html
排序数组(38min)
题目链接:https://leetcode-cn.com/problems/sort-an-array/
给你一个整数数组 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)选择排序。
2)冒泡排序。
2种思路:
思路1.选择排序。使用双重循环,第一个数和后面的数依次进行比较,记录后面数小的数组下标,把第一个数和后面最小的数交换,在把第二个数和后面数进行比较,找到后面数最小的下标,把第二个数和 后面最小的数交换,依次类推,直到倒数第二个数和倒数第一个数比较。
思路2.冒泡排序。使用双重循环,相邻数字之间进行比较,前者比后者大,两数交换,一趟数字交换完毕后,重头开始重新比较,直到最后数组安好序。
1.选择排序代码:
int len=nums.length; for(int i=0;i<len-1;i++)//选择排序 { int k=i; for(int j=i+1;j<len;j++) if(nums[k]>nums[j]) { k=j; } int temp; temp=nums[i]; nums[i]=nums[k]; nums[k]=temp; }
2.冒泡排序代码:
int len=nums.length; for(int i=0;i<len;i++)//冒泡排序 { for(int j=0;j<len-1-i;j++) if(nums[j]>nums[j+1]) { int temp; temp=nums[j]; nums[j]=nums[j+1]; nums[j+1]=temp; } }
冒泡排序代码超时,看到测试示例,我惊呆了。测试示例如图: