#c #arrays #sorting
#c #массивы #сортировка
Вопрос:
Я знаю, как сортировать массив по возрастанию, но не совсем понимаю, когда просто сортирую первые n (в моем случае 4) элементов. Я попытался добавить значение count и выполнить цикл do-while, но он все равно сортирует весь элемент. Есть идеи?
do{
for(i=0; i<size; i ){
for(j=i 1; j<size; j ){
if(arr[j] < arr[i]){
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
count ;
}
}
}
}while(count<5)
Комментарии:
1. В чем проблема? Просто установите
size
то, что вы хотите
Ответ №1:
Я знаю, как сортировать массив по возрастанию, но не совсем улавливаю его, когда просто сортирую первые
n
элементы
Это не сильно отличается.
Вместо того, чтобы использовать for
цикл для сортировки элементов всего массива, используйте его только для первых n
элементов, изменив значение size
на значение n
int n; //variable to store the value of 'n'
scanf("%d", amp;n); //scan value of 'n'
size = n; //assigning value of 'n' to 'size'
for(i=0; i < size; i )
{
for(j = i 1; j < size; j )
{
if(arr[j] < arr[i])
{
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
или по
используя n
вместо size
, если вам требуется значение size
позже в программе.
int n; //variable to store the value of 'n'
scanf("%d", amp;n); //scan value of 'n'
for(i=0; i < n; i )
{
for(j = i 1; j < n; j )
{
if(arr[j] < arr[i])
{
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
Комментарии:
1. вы также должны проверить наличие
n<=size
2. @rootTraveller да … были бы и другие подобные вещи, например
n > 0
,n <= size
, я уверен, что OP сам позаботится об этих проблемах. Я просто показываю ему способ преодолеть его проблему, но никоим образом не предоставляю полное решение 🙂3. Большое спасибо. Я использовал
n
внутриfor
цикла, потому что мне нужен фиксированный размер массива. И могу ли я предложить, если учитель попросит отсортировать только последнееn
число?4. Да … это просто. Просто введите значение
n
и запустите цикл изi = size - n
цикла continue доi < size
Ответ №2:
Ваш do
цикл не имеет очевидной функции. Единственное, что вам нужно сделать, это установить size
значение, отличное (меньшее или равное) от размера массива
Ответ №3:
Для этого вам не нужен do-while
цикл. Просто обновите значение size
by n
.
size = 4; //assign the value till you want to sort
for(i=0; i<size; i ){
for(j=i 1; j<size; j ){
if(arr[j] < arr[i]){
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
Ответ №4:
Вам не нужно использовать do-while
цикл и заменять size
на 4 (как вы сказали, что хотите отсортировать 4 элемента).
Ответ №5:
В вашем случае управление перейдет в состояние while после сортировки всех элементов.поэтому нет необходимости добавлять do-while.Задайте только нужный размер. int i,j,n=4,k,temp; int arr[]={3,5,1,7,9,1,2};
for(i=0; i<n; i ){
for(j=i 1; j<n; j ){
if(arr[j] < arr[i]){
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
Ответ №6:
Ваш массив завершается сортировкой в do{}, прежде чем перейти к вашему состоянию while(count<5). пожалуйста, проверьте это- Scanner sc =новый сканер (System.in ); System.out.println(«Введите первые n чисел для сортировки»); int firstN=sc.nextInt();
int arr[]={2,3,8,1,0,5,4};
if(firstN<=arr.length)
{
for(int i=0; i<firstN; i ){
for(int j=i 1; j<firstN; j ){
if(arr[j] < arr[i]){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}