Как отсортировать массив без использования цикла на C++? Я думаю, что он может использовать рекурсию, но я не знаю, как ее реализовать.Как отсортировать без использования цикла
ответ
Я думаю, что вы ищете Quicksort Algorithm
В зависимости от вашего определения «без циклов» стандартная quicksort может не работать из-за цикла, участвующего в шаге разбиения. – templatetypedef
Есть несколько способов сортировки массива.
Если вы пытаетесь реализовать цикл рекурсивно, вы можете проверить статью в википедии. Это хорошо объяснено в разделе «Рекурсия компьютерной науки». В противном случае вы можете попробовать реализовать различные алгоритмы сортировки. Хорошо известны Quicksort и Mergesort. Существует много алгоритмов сортировки
Хорошо, но как ему реализовать без цикла, используя только рекурсию? Я понимаю рекурсию более или менее, но я хотел бы получить код и anazlize его. Это был бы отличный урок. – user3067773
#include<stdio.h>
int * sort(int *p,int i,int j,int size)
{
if(i<size)
{
if(j<size-i-1)
{
if(p[j]>p[j+1])
{
int temp = p[j];
p[j] = p[j+1];
p[j+1] = temp;
}
}
else
{
j=0;
++i;
}
p = sort(p,i,++j,size);
}
возвращение p; }
int main()
{
int array[] ={1,5,2,7,3};
int len = sizeof(array)/sizeof(int);
int *a = sort(array,0,0,len);
for(int i=0;i<len;i++)
{
printf("\n array[%d]->%d",i,a[i]);
}
}
если вы найдете мой ответ правильно и полезно, пожалуйста, проголосуйте за мой ответ –
Как насчет того, чтобы вы сначала отступали правильно? – crashmstr
Извините, моя ошибка. Как насчет сейчас ? –
//C++
void bubblesort(vector<int> &arr, int iteration) {
if(iteration == 0)
return;
bubbleswap(arr, 0, 1, iteration);
bubblesort(arr, iteration-1);
}
void bubbleswap(vector<int> &arr, int i, int j, int n) {
if(j>=n)
return ;
if(arr[i] < arr[j]){
swap(arr[i], arr[j]);
}
bubbleswap(arr, i+1, j+1, n);
}
void sort(vector<int> &arr) {
int n = arr.size();
if(n<=1)
return ;
bubblesort(arr, n);
}
Использование std::sort
определено в алгоритм заголовочного файла
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int a[]={5,3,4,1,2};
sort(a,a+5);
for(int i=0;i<5;i++)
cout<<a[i]<<" "; // 1 2 3 4 5
return 0;
}
- 1. LINQ без использования цикла
- 2. попарно evlaluation без использования цикла
- 3. Vectorize это без использования цикла
- 4. Код анаграммы без использования цикла
- 5. Как распечатать факториалы без использования цикла?
- 6. Как построить тик для цикла без использования переменной цикла
- 7. Как отсортировать файл 10Gb в java без использования внешнего API
- 8. Как отсортировать данные в Spark без использования Spark SQL?
- 9. Как отсортировать массив в алфавитном порядке без использования Array.sort: Java
- 10. Как отсортировать сортировщика по алфавиту без использования collections.sort();
- 11. Как отсортировать ArrayList по алфавиту в Java без использования коллекций?
- 12. как отсортировать многострочное текстовое поле без использования массива
- 13. Как обновить 2 таблицы без объединения и без использования цикла
- 14. Найти товар в ObservableCollection без использования цикла
- 15. Проверьте, пуст ли массив без использования цикла?
- 16. FileStream.Read - Чтение потока без использования цикла
- 17. Связанный список обратный без использования цикла?
- 18. Выполнить функцию несколько раз без использования цикла
- 19. Создать подмножество dataframe без использования для цикла
- 20. чтение байтов без использования какого-либо цикла
- 21. Изменить объект внутри массива без использования цикла
- 22. использовать переменный индекс без использования цикла
- 23. Остановка цикла for без использования перерыва
- 24. Несколько запросов MongoDB без использования цикла?
- 25. Построить диагональную матрицу без использования для цикла
- 26. Листинг словаря без использования для цикла
- 27. Определить значения массива без использования цикла 'for'
- 28. Значение сущности списка обновления без использования цикла
- 29. найти 1-ое вхождение без использования цикла
- 30. Найти внутреннее исключение без использования цикла while?
Можете ли вы описать, почему вы хотите это сделать, и что вы пробовали до сих пор? Вы имеете в виду «без каких-либо петель вообще» или «без основной логики, представляющей собой гигантскую петлю»? Какие исследования вы провели в алгоритмах сортировки? Пожалуйста, предоставьте более подробное описание вашего вопроса, включая ваши исследования. – templatetypedef
Mergesort - довольно известный алгоритм деления и покорения рекурсивных алгоритмов. Википедия и StackOverflow смогут предоставить вам всю необходимую вам информацию. Если вы не понимаете рекурсию, я бы начал там сначала. –
О, звуки сортировки ... http://www.youtube.com/watch?v=67ta5WTjjUo&list=PLZh3kxyHrVp_AcOanN_jpuQbcMVdXbqei – Homer6