首页 > 其他分享 >蜗牛排序

蜗牛排序

时间:2023-08-19 12:55:52浏览次数:29  
标签:size int ret vector array 排序 蜗牛 row

题目:

  

——————————————————————————————————————————————————————————

解答:

#include <iostream>
#include <vector>
using namespace std;

vector<int> snail(vector<vector<int>>& array) {
    vector<int> ret;
    int size = array.size(); // 获取数组的大小
    int rowBegin = 0, rowEnd = size - 1; // 定义行的起始和结束索引
    int colBegin = 0, colEnd = size - 1; // 定义列的起始和结束索引

    while (rowBegin <= rowEnd && colBegin <= colEnd) {
        // 从左到右遍历上行
        for (int col = colBegin; col <= colEnd; ++col) {
            ret.push_back(array[rowBegin][col]);
        }
        ++rowBegin;

        // 从上到下遍历右列
        for (int row = rowBegin; row <= rowEnd; ++row) {
            ret.push_back(array[row][colEnd]);
        }
        --colEnd;

        // 从右到左遍历下行
        for (int col = colEnd; col >= colBegin; --col) {
            ret.push_back(array[rowEnd][col]);
        }
        --rowEnd;

        // 从下到上遍历左列
        for (int row = rowEnd; row >= rowBegin; --row) {
            ret.push_back(array[row][colBegin]);
        }
        ++colBegin;
    }

    return ret;
}

int main() {
    vector<vector<int>> input = {
        { 1, 2, 3, 4 },
        { 5, 6, 7, 8 },
        { 9, 10, 11, 12 },
        { 13, 14, 15, 16 }
    };

    vector<int> result = snail(input);

    for (int i = 0; i < result.size(); i++) {
        cout << result[i] << " ";
    }
    cout << endl;
    return 0;
}

res:

  

(解答中把输入写死了;实际做题 按照具体题目的输入来处理输入)

(〃>_<;〃)(〃>_<;〃)(〃>_<;〃)

标签:size,int,ret,vector,array,排序,蜗牛,row
From: https://www.cnblogs.com/wjjgame/p/17642340.html

相关文章

  • 【LeetCode2118. 建立方程】 group_concat指定分隔符,指定排序顺序
    目录题目地址题目描述代码题目地址https://leetcode.cn/problems/build-the-equation/description/题目描述Example2:输入:Terms表:+-------+--------+|power|factor|+-------+--------+|4|-4||2|1||1|-1|+-------+---......
  • 归并排序
    publicstaticvoidmerge(int[]arr,intlow,intmiddle,inthigh){    int[]temp=newint[high-low+1];    inti=low;               //第一个数组需要遍历的下标    intj=middle+1;          //第二......
  • 冒泡排序
    publicstaticvoidbubbleSort(int[]arr){for(inti=0;i<arr.length-1;i++){for(intj=0;j<arr.length-1-i;j++){if(arr[j]>arr[j+1]){inttemp=arr[j];arr[j]=arr[j+1];......
  • Go 语言中排序的 3 种方法
    原文链接:Go语言中排序的3种方法在写代码过程中,排序是经常会遇到的需求,本文会介绍三种常用的方法。废话不多说,下面正文开始。使用标准库根据场景直接使用标准库中的方法,比如:sort.Intssort.Float64ssort.Strings举个例子:s:=[]int{4,2,3,1}sort.Ints(s)fmt.Prin......
  • 希尔排序
    publicstaticvoidshellSort(int[]arr){for(intd=arr.length;d>0;d/=2){//遍历所有步长for(inti=d;i<arr.length;i++){for(intj=i-d;j>=0;j-=d){if(arr[j]>arr[j+d]){int......
  • C-排序算法
    稳定性:在待排序的数据中,对于数值相同的数据,在整个排序过程中如果不会改变他们原来的先后顺序,则认为该排序算法是稳定的。内排序:所有排序操作都在内存中完成。外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行。比较排序:在排序的最终结果里,元素之......
  • 插入排序
    插入排序就像斗地主时理牌一样publicstaticvoidinsertSort(int[]arr){for(inti=1;i<arr.length;i++){//i是待插入元素的索引inttemp=arr[i];//待插入值intj=i-1;//已排序区域......
  • 快速排序
    publicstaticvoidquickSort(int[]arr,intstart,intend){intstandard=arr[start];intlow=start;inthigh=end;while(low<high){//找比标准数大的数、比标准数小的数while(low<high&&standard<=arr[high]){......
  • el-table 拖动排序 sortablejs
    参考:https://blog.csdn.net/glpghz/article/details/124359331官网:http://www.sortablejs.com/index.html安装cnpminstallsortablejs--save引入importSortablefrom"sortablejs";table加锚点<el-tableid="ability-table"加载后mounted()......
  • 【数据结构】选择排序 简单选择+堆排序
    选择排序的基本思想是每次从待排序的序列中选出最小值(或者最大值)依次放在已排序序列中,直到待排序序列为空,此时序列已完全有序。选择排序的选择只需要进行n-1趟,因为当剩余元素数量为1时无需再选择,直接放在排序序列的末尾即可。在这里学简单选择排序和堆排序两种算法,简单选择考的......