Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从数组中删除并移位_C++_Arrays_Sorting - Fatal编程技术网

C++ 从数组中删除并移位

C++ 从数组中删除并移位,c++,arrays,sorting,C++,Arrays,Sorting,对于数组,例如大小为5的数组, 我试图在0和数组的当前最后一个元素之间找到一个随机位置 (最后一个位置第一次为4,第二次为3,依此类推。) 删除该数组位置中的任何元素,将其上方的所有元素向下移动,以使数组中没有空点 我试图尽可能地节省时间,所以我希望避免将随机位置设置为0或类似的值 如果我的数组看起来像intn[]={1,3,5,7,9}我的随机位置查找器选择了位置2,我如何将位置5(位置2)移到末尾并向下移动所有内容,使生成的数组看起来像{1,3,7,9,5} 到目前为止,我已经: for (

对于数组,例如大小为5的数组, 我试图在0和数组的当前最后一个元素之间找到一个随机位置

(最后一个位置第一次为4,第二次为3,依此类推。)

删除该数组位置中的任何元素,将其上方的所有元素向下移动,以使数组中没有空点

我试图尽可能地节省时间,所以我希望避免将随机位置设置为0或类似的值

如果我的数组看起来像
intn[]={1,3,5,7,9}
我的随机位置查找器选择了位置2,我如何将位置5(位置2)移到末尾并向下移动所有内容,使生成的数组看起来像
{1,3,7,9,5}

到目前为止,我已经:

for (int j = 0; j < 5; j++)
    {
    printf ("before removal:\n");
    printarray (array, 5);

    int randompos =  (   rand() % (5-j)   ); //selects random number from 0 to active last pos.
    /* ?????? */ = array[randompos]; // What position will hold my random position?

//Also, what goes in place of the 'deleted' element?

    insertion_sort (array, 5-j); //sort only the active elements

    printf ("after removal:\n");
    printarray (array, 5);

    }
(假设随机位置是数组位置2,存储数字5)


给定数组
{1,3,5,7,9}
pos=2
,可以执行以下操作:

int main()
{
    int pos = 2;
    int arr[] = {1, 3, 5, 7,9};
    int length =sizeof(arr)/sizeof(arr[0]);
    int val = arr[pos];

    for (int i = pos; i < length; i++){
        int j = i + 1;
        arr[i] = arr[j];
    }
    arr[length - 1] = val;

    return 0;
}
intmain()
{
int pos=2;
int-arr[]={1,3,5,7,9};
int length=sizeof(arr)/sizeof(arr[0]);
int val=arr[pos];
对于(int i=pos;i
#包括

#在3、2、1中包括有人会说“使用
向量”

,如果你不想保持元素的相对顺序,只需与最后一个元素交换,如果你使用
std::rotate
after removal:
1,3,7,9,5
int main()
{
    int pos = 2;
    int arr[] = {1, 3, 5, 7,9};
    int length =sizeof(arr)/sizeof(arr[0]);
    int val = arr[pos];

    for (int i = pos; i < length; i++){
        int j = i + 1;
        arr[i] = arr[j];
    }
    arr[length - 1] = val;

    return 0;
}
#include <iostream>
#include <algorithm>
#include <random>

int main() {
  int n[] = {1, 3, 5, 7, 9};
  std::size_t n_size = sizeof(n) / sizeof(int);

  std::default_random_engine generator;  
  for(std::size_t i(0), sz(n_size); i < sz; ++i) {
    std::cout << "before removal:" << std::endl;
    std::cout << "  ";
    for(std::size_t j(0); j < n_size; ++j) std::cout << n[j] << " ";
    std::cout << std::endl;
    --n_size;
    std::uniform_int_distribution<int> distribution(0, n_size);
    std::size_t idx = distribution(generator);
    std::cout << "  Removing index: " << idx << std::endl;
    std::swap(n[idx], n[n_size]);
    std::sort(std::begin(n), std::begin(n) + n_size); // use your sorting here
    std::cout << "after removal:" << std::endl;
    std::cout << "  ";
    for(std::size_t j(0); j < n_size; ++j) std::cout << n[j] << " ";
    std::cout << "\n" << std::endl; 
  } 
}