+ 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?
10 odpowiedzi
+ 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