zoukankan      html  css  js  c++  java
  • Microsoft 数组移位

    传入一个数组如 {1,2,3,4,5,6,7} 
    将数组前面 head的一个子集移到数组末尾end
    如input numberOfElements=3,则{1,2,3,4,5,6,7}=>{4,5,6,7,1,2,3} 
    input numberOfElements=5,则{1,2,3,4,5,6,7}=>{6,7,1,2,3,4,5}  
    如何写出该算法?

    方法一:用前部分逆置,后部分逆置,整个数组逆置。

    注意数组名作形参的时候,会退化为指针,所以用sizeof(a)/sizeof(a[0])是求不出数组长度的,

    目前只知道直接传入数组长度的方法。

    View Code
     1 #include<iostream>
    2 using namespace std;
    3
    4 void reverse(int array[],int start,int end)
    5 {
    6 for(int i=start; i<(end+start+1)/2; i++) //注意这里的写法。。。
    7 {
    8 array[i]^=array[end+start-i];
    9 array[end+start-i]^=array[i];
    10 array[i]^=array[end+start-i];
    11 }
    12 }
    13
    14 void MoveSubArrayToTheEnd(int array[], int numberOfElements,int length)
    15 {
    16 reverse(array,0,numberOfElements-2);
    17 reverse(array,numberOfElements-1,length);
    18 reverse(array,0,length);
    19 }
    20
    21
    22 int main()
    23 {
    24
    25 int b[]= {0,1,2,3,4,5,6,7};
    26 MoveSubArrayToTheEnd(b,6,sizeof(b)/sizeof(b[0])-1);
    27 for(int i=0; i<=6; i++)
    28 cout<<b[i]<<",";
    29 cout<<b[7]<<endl;
    30
    31 }

    第二种方法参考冒泡排序,用循环移位实现。。。

    View Code
     1 #include<iostream>
    2 using namespace std;
    3
    4 void MoveSubArrayToTheEnd(int array[], int numberOfElements,int length)
    5 {
    6 for(int i=0;i<numberOfElements;i++)
    7 {
    8 for(int j=0;j<length-1;j++)
    9 {
    10 array[j]+=array[j+1];
    11 array[j+1]=array[j]-array[j+1];
    12 array[j]=array[j]-array[j+1];
    13 }
    14 }
    15 }
    16
    17 int main()
    18 {
    19
    20 int b[]= {0,1,2,3,4,5,6,7};
    21 MoveSubArrayToTheEnd(b,6,sizeof(b)/sizeof(b[0]));
    22
    23 for(int i=0; i<=6; i++)
    24 cout<<b[i]<<",";
    25 cout<<b[7]<<endl;
    26 return 0;
    27 }




  • 相关阅读:
    CSS 引入方式
    css的选择器效率分析
    CSS样式优先级
    JSONP
    javascript跨域的几种方法
    精确获取对象的类型:Object.prototype.toString()
    MooseFS
    使用tmpfs作为缓存加速缓存的文件目录
    nginx auth
    memcached
  • 原文地址:https://www.cnblogs.com/YipWingTim/p/2236775.html
Copyright © 2011-2022 走看看