sorting | Sololearn: Learn to code for FREE!

+2

sorting

void sort(float a[], int indx[], int n); int main() { float a[8]= {23,45,67,89,23,90,100,55}; cout<<"Before Sorting: "<<endl; for(int i=0; i<8; i++) { cout<<a[i]<<" , "; } cout<<"\nAfter Sorting: "<<endl; sort(a,3,8); } void sort(float a[], int indx[], int n) { //indirect bubble sort for(int i=1; i<n; i++) { //bubble up max for(int j=0; j<n-i; j++) { if(a[indx[j]]>a[indx[j+1]]) { swap(indx[j],indx[j+1]); } } } cout<<"the array is: "<<endl; for(int i=0; i<n; i++) { cout<<a[i]<<" , "; } } what is the wrong in this code?

4/23/2021 1:25:04 PM

Ramisa Fariha

10 Answers

New Answer

+4

sort() function signature void sort( float[], int[], int ); Invoked in main() as follows sort( a, 3, 8 ); The second parameter is defined to accept array of `int`, but instead, an `int` was given when calling it.

+2

Bubble sort is a classic... Put simply Consider swapping 2 nos a and b You need a 3rd variable c The algorithm: a = b b = c c= a

+2

thank you @Martin Taylor...the solution only has the function but not the code..I was confused about how to write the index array but now it's clear to me..And I've tried to understand from the book but sometimes the way the language is used there seems hard to understand.

+1

thank you

+1

Is this some kind of test? ☺️ I counted three errors, one extra operation and a violation of logic ☺️ #include <iostream> using namespace std; // Declare function void sort(float a[], int indx[], int n) { //indirect bubble sort for(int i=1; i<n; i++) { //bubble up max for(int j=0; j<n-i; j++) { if(a[indx[j]]>a[indx[j+1]]) { swap(indx[j],indx[j+1]); } } } cout<<"the array is: "<<endl; for(int i=0; i<n; i++) { cout<<a[indx[i]]<<" , ";//3 } } int main() { float a[8]= {23,45,67,89,23,90,100,55}; cout<<"Before Sorting: "<<endl; int indx[8]; //1 for(int i=0; i<8; i++) { indx[i] = i; //2 cout<<a[i]<<" , "; } cout<<"\nAfter Sorting: "<<endl; sort(a,indx,8); } P. S: "sort(a, 3, 8); 🤔 Why three, what were you trying to get?" ☺️

0

@ Martin Taylor will I create the index array with the reverse values of the main array? void sort(float a[], int indx[], int n); void showarray( float a[],int n); void showindxarray( int a[],int n); int main() { float a[8]= {23,45,67,89,23,90,100,55}; int array_size=8; cout<<"Before Sorting: "<<endl; showarray(a,array_size); int indx[]= {55,100,90,23,89,67,45,23}; int indxarray_size=8; cout<<"\nAfter Sorting: "<<endl; sort(a,indx,8); showindxarray(indx,indxarray_size); } void sort(float a[], int indx[], int n) { //indirect bubble sort for(int i=1; i<n; i++) { //bubble up max for(int j=0; j<n-i; j++) { if(a[indx[j]]>a[indx[j+1]]) { swap(indx[j],indx[j+1]); } } } } void showarray( float a[],int n) { for(int i=0; i<n; i++) { cout<<a[i]<<","; } } void showindxarray( int a[],int n) { for(int i=0; i<n; i++) { cout<<a[i]<<","; } } after swapping indx array not changing

0

That was a mistake