Это не совсем соответствует вашему определению проблемы с образцами, которые вы предоставляете, например, вы говорите:
Input array : 12, 33, 1, 19, 44, 11, 27, 76, 13
After sorting: 33, 1, 44, 11, 12, 19, 27, 76, 13
Но, согласно вашим утверждениям, 11 не должно бытьсамый первый элемент?
Пожалуйста, дайте мне знать, если я что-то упустил.В любом случае (и так как вы еще не упомянули язык) я сделал это на C ++ и он работает (насколько я мог понять, к чему вы стремились):
#include <iostream>
#include <vector>
using namespace std;
bool samedigits(int x)
{
//if ( x < 10 ) return false;
int digit = x%10;
while(x>0)
{
if(x%10 != digit) return false;
x = x/10;
}
return true;
}
int main() {
int same = 0;
int same1 = 1;
int temp = 0;
int n = 0;
int digit = 0;
int digit1 = 0;
vector <int>a = { 1,22,43,444,51,16,7,8888,90,11, 99};
for(int n : a) {
cout << n << " ";
}
for (int i=0; i <= a.size() -1; i++)
{
for (int j=0; j <= a.size() - 1 ; j++)
{
if ( j != i) {
if (samedigits(a[j]) && samedigits(a[i])) {
if (a[j] > a[i]) {
int tmp = a[j];
a[j] = a[i];
a[i] = tmp;
continue;
}
}else if (! samedigits(a[j]) && samedigits(a[i]) ) {
int tmp = a[j];
a[j] = a[i];
a[i] = tmp;
continue;
} else if ( samedigits(a[j]) && ! samedigits(a[i]) ){
continue;
}else {
if (a[j] > a[i]) {
int tmp = a[j];
a[j] = a[i];
a[i] = tmp;
continue;
}
}
}
}
}
cout << endl;
for(int n : a) {
cout << n << " ";
}
}
И он возвращает:
Я не получу, если вы рассматриваете однозначное число как «элементы с одинаковыми цифрами».Следовательно, я прокомментировал строку, которая может хорошо вписываться в эту точку зрения или нет.Не стесняйтесь комментировать.
Вы можете проверить это здесь:
https://www.jdoodle.com/online-compiler-c++
С уважением!