zoukankan      html  css  js  c++  java
  • 谷歌笔试题——排序,只允许0和其他元素交换

    2.2 长度为n的数组乱序存放着0至n-1. 现在只能进行0与其他数的swap,请设计并实现排序。

    这题有一个隐含条件:即数组元素是连续的,即0——n-1,当你排好序后,你会发现数组元素和该元素的下标是相等的。

    思路:以数组2 0 3 1为例

    1、首先a[0]=2,按照上述条件它应该放在a[2]的位置上。因为只允许0元素和其他元素的交换。所以不能直接交换a[0]和a[2],所以将0元素和a[2]互换,得到2 3 0 1,然后就可以把a[0]=2和a[2]=0互换了,得到0 3 2 1

    按照这个思路,实现代码如下:

    // Sort_google.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include <iostream>
    using namespace std;
    
    void swap(int *a,int i,int j)
    {
        int temp;
        temp=a[i];
        a[i]=a[j];
        a[j]=temp;
    }
    
    int find(int *a,int len)
    {
        for (int i=0;i<len;i++)
        {
            if (a[i]==0)
            {
                return i;
            }
        }
    }
    
    void sort(int *a,int len)
    {
        for (int i=0;i<len;)//注意这里没有i++
        {
            if (a[i]==i)
            {
                i++;    //能够跳出循环就主要看这句话了
                continue;    
            }
    
            swap(a,find(a,len),a[i]);
            for (int j=0;j<len;j++)
            {
                cout<<a[j]<<"  ";    //这里只是为了输出数组元素  看一下排序后数组的元素值  无实际作用
            }
            cout<<endl;
    
            swap(a,find(a,len),i);
            for (int j=0;j<len;j++)
            {
                cout<<a[j]<<"  ";    //这里只是为了输出数组元素  看一下排序后数组的元素值  无实际作用
            }
            cout<<endl;
    
            swap(a,find(a,len),0);    //将0元素换到a[0]的位置上去。
        }
        
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        int a[]={1,10,9,7,5,2,3,4,0,6,8};//{3,2,0,1};
        int len=sizeof(a)/sizeof(int);
        sort(a,len);
        for (int i=0;i<len;i++)
        {
            cout<<a[i]<<"  ";
        }
        cout<<endl;
        return 0;
    }

    截图如下:

    image

  • 相关阅读:
    浅谈线性 Linear
    Github TinyRenderer渲染器课程实践记录
    蓝点无限UWB TDOA 低功耗标签 功耗测试
    UWB DW1000 BP30 测距代码架构
    C语言
    C语言
    张量tensor 和张量分解 tensor decomposition
    Manifold learning流行学习和谱聚类
    机器学习里面的核kernel, 维数灾难
    机器学习评价方法
  • 原文地址:https://www.cnblogs.com/audi-car/p/4611686.html
Copyright © 2011-2022 走看看