LeetCode刷题日记 75. 颜色分类

    科技2023-12-21  85

    今天是10月7日星期三,开学的第三天,昨天学习压力一下子大了很多,写leetcode的题就有一些囫囵吞枣,也没有写日记,以后无比要改正。今天比较幸运,每日一题给的比较简单,一个起泡算法就解决了。

    题目如下,一个数组中包含0,1,2三种数字,数组中的数字顺序是无序的,要求写一段程序将0,1,2从小到大重新排序。代码如下:

    class Solution { public: void sortColors(vector<int>& nums) { int len = nums.size(); int i = len - 1; //下一趟需要参与排序的最大下标 while (i > 0) //当i等于0时,说面数组中最后一个数也已经经过判断,所以循环停止 { int lastExchangeIndex = 0; for(int j = 0; j < i; ++j) //每一轮循环中,若发现左边数大于右边数,则左右交换 { if(nums[j+1]<nums[j]) swap(nums[j],nums[j+1]); lastExchangeIndex = j; //每一次交换的下标更新为lastExchangeIndex } i = lastExchangeIndex; //循环结束,lastExchangeIndex为最后一次交换的下标 } } };

     

    Processed: 0.048, SQL: 8