冒泡排序复习
Posted 小智RE0
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了冒泡排序复习相关的知识,希望对你有一定的参考价值。
基本思想,依次比较相邻的元素大小,将大的元素交换到后面,
每次都是从当前元素位置出发,直到未完成排序的末尾;依次冒泡,直到完成由小到大的排序;
class Solution
public int[] sortArray(int[] nums)
int n = nums.length;
//基本冒泡排序;
for(int i =0;i<n-1;i++)
for(int j=1;j<n-i;j++)
//比较交换;
if(nums[j]<nums[j-1])
swap(nums,j-1,j);
return nums;
//交换方法;
private void swap(int[] nums,int a,int b)
//简单的临时变量交换法;
int temp = nums[a];
nums[a] = nums[b];
nums[b] = temp;
同样地,在912. 排序数组这道题中测试时,
由于测试用例的大小,出现了超时;
简易优化,使用一个布尔标志位;判断是否进行了交换;
class Solution
public int[] sortArray(int[] nums)
int n = nums.length;
//基本冒泡排序;
for(int i =0;i<n-1;i++)
//布尔标志位;
boolean flag = true;
for(int j=1;j<n-i;j++)
//比较交换;
if(nums[j]<nums[j-1])
swap(nums,j-1,j);
flag = false;
//根据标志位判断是否进行了交换排序;
if(flag)
break;
else
flag = true;
return nums;
//交换方法;
private void swap(int[] nums,int a,int b)
//简单的临时变量交换法;
int temp = nums[a];
nums[a] = nums[b];
nums[b] = temp;
在这道题的测试用例下,即使使用标志位优化,还是超时;
但是算法的思想逻辑没有错误,只是时间复杂度问题;
以上是关于冒泡排序复习的主要内容,如果未能解决你的问题,请参考以下文章