使用数组大小进行气泡排序



我想对arraylist的n个元素进行冒泡排序。我不想像下面那样首先声明arraylist,而是想使用for循环创建arraylist。这是首先声明arraylist的代码:

// A function to implement bubble sort  
void bubbleSort(int arr[], int n)  
{  
int i, j;
bool swapped; 
int comparisons=0;
for (i = 0; i < n-1; i++)  {
swapped = false;
// Last i elements are already in place  
for (j = 0; j < n-i-1; j++)
{
comparisons++;
if (arr[j] > arr[j+1])  
{
int temp = arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
swapped = true; 
}
}
if (swapped == false) 
break; 
}   
cout << "Number of comparisons = " << comparisons << endl;
}  
/* Function to print an array */
void printArray(int arr[], int size)  
{  
int i;  
for (i = 0; i < size; i++)  
cout << arr[i] << " ";  
cout << endl;  
}  
// Driver code  
int main()  
{  
int arr[] = {1, 2, 3, 4, 5};  
int n = 5;  
bubbleSort(arr, n);  
cout<<"Sorted array: n";  
printArray(arr, n);  
}  

我不想这么做。

我做了这个,但我不知道为什么它不起作用。我对C++还很陌生。我可以知道出了什么问题吗。非常感谢。

// A function to implement bubble sort  
void bubbleSort(int arr[], int n)  
{  
int i, j;
bool swapped; 
int comparisons=0;
for (i = 0; i < n-1; i++)  {
swapped = false;
// Last i elements are already in place  
for (j = 0; j < n-i-1; j++)
{
comparisons++;
if (arr[j] > arr[j+1])  
{
int temp = arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
swapped = true; 
}
}
if (swapped == false) 
break; 
}   
cout << "Number of comparisons = " << comparisons << endl;
}  
/* Function to print an array */
void printArray(int arr[], int size)  
{  
int i;  
for (i = 0; i < size; i++)  
cout << arr[i] << " ";  
cout << endl;  
}  

有两个问题:

  1. 数组为0索引
  2. 可变长度数组,它在C++中并不真正合法

所以像写一样写main

// Driver code  
int main()  
{  
int n = 5;  
int* arr = new int[n];
for(int i=0; i<n; i++){
arr[i]=i+1;
cout<<arr[i];
cout<<endl;
}
bubbleSort(arr, n);  
cout<<"Sorted array: n";  
printArray(arr, n);
delete[] arr;
}

最新更新