簡體   English   中英

具有特定要求的C ++數組排序/混洗

[英]C++ arrays sorting/shuffling with specific requirements

我在C ++中有一個包含20個整數的數組,我想要將它們混合(隨機順序)。

我還想以這樣的方式對它們進行排序:10個第一個數字按升序排列最小,其余數字只是隨機數。

有沒有辦法自動做?

你需要做的是調用stl函數random_shuffle並進行sort 這兩個函數都使用迭代器,因此您只能為每個函數提供一系列值。

int arr[20] = {some values};
sort(arr, arr+20);
random_shuffle(arr+10, arr+20);

為什么不使用<algorithm><vector>庫?

你可以使用partial_sort,它完全符合你的要求

#include <iostream>
#include <algorithm>
#include <vector>

bool myfunction (int i,int j) { return (i<j); }

int main () {
  int myints[] = {9,8,7,6,5,4,3,2,1};
  std::vector<int> myvector (myints, myints+9);

  std::partial_sort (myvector.begin(), myvector.begin()+5, myvector.end());

  std::partial_sort (myvector.begin(), myvector.begin()+5, myvector.end(),myfunction);

  std::cout << "myvector contains:";
  for (std::vector<int>::iterator it=myvector.begin(); it!=myvector.end(); ++it)
    std::cout << ' ' << *it;
  std::cout << '\n';

  return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM