//★题目:自然数数组的排序
//要求:给定一个长度为N的整型数组arr,其中有N个互不相等的自然数1~N,请实现arr的排序
// 但是不要把下标0~N-1位置上的数通过直接赋值的方式替换成1~N
// 时间复杂度O(N),空间复杂度O(1)
#include <iostream>
#include <vector>
using namespace std;
void naturalNumbeSort(vector<int> &matrix);
void printVector1(vector<int> matrix);
vector<int> generateDesignated1Vector(int *arr, int size);
int main()
{
int arrayMine[7] = { 1, 5, 3, 4, 2, 6, 7 };
int *arr = arrayMine;
vector<int> matrix = generateDesignated1Vector(arr, 7);
printVector1(matrix);
cout << endl;
naturalNumbeSort(matrix);
printVector1(matrix);
cout << endl;
system("pause");
return 0;
}
void naturalNumbeSort(vector<int> &matrix)
{
for (int i = 0; i < matrix.size(); i++)
{
while (matrix[i] != i + 1)
{
int index = matrix[matrix[index] - 1];
matrix[index] = matrix[i];
}
}
}
//modify
//leftUnique
void printVector1(vector<int> matrix)
{
int size = matrix.size();
for (int i = 0; i < size; i++)
{
cout << matrix[i] << " ";
}
}
vector<int> generateDesignated1Vector(int *arr, int size)
{
int setNum = 0;
int arrIndex = 0;
vector<int> result;
if (size == 0)
{
return result;
}
static int vecIndex = 0;
while (vecIndex < size)
{
setNum = arr[arrIndex];
arrIndex++;
result.push_back(setNum);
vecIndex++;
}
return result;
}
数组与矩阵:自然数数组的排序
最新推荐文章于 2021-08-29 09:54:40 发布