• 谷歌笔试题——排序,只允许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

  • 相关阅读:
    crystal report 用存储过程的问题。
    新的开始—2014
    C#基础(二)——C#中的构造函数
    C#基础(一)——C#中反斜杠/n与/r的区别
    Html基础(一)
    yield关键字, default关键字, 别名关键字
    让 wpf tabcontrol 延缓初始化每个tab item content
    MVC,MVP,MVVM(补充)
    Focus scope in WPF
    Wpf ItemsControl 开启UI Virtualization 的条件
  • 原文地址:https://www.cnblogs.com/audi-car/p/4611686.html
Copyright © 2020-2023  润新知