Recursıve functıon problem

OZZAN

Yeni üye
29 Haz 2015
47
0
#include <iostream>
#include <assert.h>

using namespace std;

struct LinkedList
{
int num;
LinkedList *next;
LinkedList *prev;

//default constructor
LinkedList::LinkedList()
:num(0), next(NULL), prev(NULL)
{}
//constructor
LinkedList::LinkedList(int i, LinkedList *n, LinkedList *p)
:num(i), next(n), prev(p)
{}
};

LinkedList* bubbleSort(int* array, int size){
int* copy= new int[size]; //copy for bubble sort algorithm

for(int i=0; i<size; i++){
copy=array;
}
bool swapped = true;
int j = 0;
int tmp; //bubblesort
while (swapped) {
swapped = false;
j++;
for (int i = 0; i < size - j; i++) {
if (copy > copy[i + 1]) {
tmp = copy;
copy = copy[i + 1];
copy[i + 1] = tmp;
swapped = true;
}
}
}
LinkedList* bubblelist = new LinkedList(copy[0], NULL, NULL);
LinkedList* listcreator = bubblelist;

for(int i=1; i<size; i++){
listcreator->next = new LinkedList(copy, NULL, listcreator);
listcreator=listcreator->next;
}
LinkedList *counter=bubblelist;
int count=1;
while(counter->next!=NULL){
count++;
counter=counter->next;
}
assert(count=size); //checking
return bubblelist;
}

LinkedList *quickSort(int *array, int startPosition, int endPosition)
{
int i = startPosition;
int j = endPosition;
int pivot = array[(startPosition+endPosition)/2];

while(startPosition<j || i<endPosition){
while(array<pivot)
i++;
while(array[j]>pivot)
j--;

if(i<=j){
int temp = array;
array = array[j];
array[j] = temp;
i++;
j--;
}
else{
if(startPosition<j)
quickSort(array, startPosition, j);
if(i<endPosition)
quickSort(array,i,endPosition);
}
}

LinkedList* head = new LinkedList(array[0], NULL, NULL);
LinkedList* tail = head;

for(int i=1; i<endPosition; i++){
tail->next = new LinkedList(array, NULL, NULL);
tail=tail->next;
}
return head;
}

int main()
{
cout << "Enter the number of inputs: " ;
int size;
cin >> size;
int* array=new int[size];

cout << "Enter the numbers: ";

for(int i=0; i<size; i++)
{
cin >> array;
}

LinkedList* head = new LinkedList(array[0], NULL, NULL);
LinkedList* tail = head;

for(int i=1; i<size; i++){
tail->next = new LinkedList(array, NULL, NULL);
tail=tail->next;
}

LinkedList* b=bubbleSort(array, size);
//prints the bubble sort
for(int i=0; i<size; i++)
{
cout << b->num << endl;
b=b->next;
}

//quicksort algorithm.
int startPosition=0, endPosition=size-1;
LinkedList* answer=quickSort(array, startPosition, endPosition);

for(int i=0; i<size; i++)
{
cout << head->num << endl;
head=head->next;
}

system("pause");
return 0;
}




/*
Program hiç bir hata vermiyor. Bubble Sortlu kısmı çalışıyordu. Bir ekleme yaptım ve Quick sort fonksiyonu açtım ama quick sort kısmına girdikten sonra imleç return'e geliyor ve bir adım daha gidip paranteze geliyor sonra recursive(tekrar) kısmından

else{
if(startPosition<j)
quickSort(array, startPosition, j);
if(i<endPosition)
quickSort(array,i,endPosition);
}

tekrar başlıyor. Yani program fonksiyondan çıkamıyor gibi. Fonksiyonda bir imlecin return'den sonra çıkmayıp tekrar fonksiyona girmesine neden olan nedir?

Bir kişi yardım edebilirse çok minnettar kalacağım. Dün 6saat uğraştım çözemedim!
*/
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.