冒泡排序
void BubbleSort(vector<int> arr,int length);
int main(int argc, char** argv) {
int n;
vector<int> arr;
vector<int>::iterator i;
cin >> n;
arr.resize(n);
for(i=arr.begin();i<arr.end();i++){
cin >> *i;
}
BubbleSort(arr,n);
for(i=arr.begin();i<arr.end();i++){
cout << *i << " ";
}
return 0;
}
void BubbleSort(vector<int> arr,int length)
{
for(int i=0;i<length;i++){
for(int j=0;j<length-i-1;j++){
if(arr[j]>arr[j+1]){
int temp;
temp=arr[j+1];
arr[j+1]=arr[j];
arr[j]=temp;
}
}
}
}
输入
5
23
34
1
2
3
输出23 34 1 2 3
你函数定义有问题。应该使用传地址。不应该使用值传入。值传入只会复制一份值。最终你的数组不会改变。
代码:
#include <iostream>
#include <stdio.h>
#include <vector>
#include <string.h>
using namespace std;
void BubbleSort(vector<int> &arr,int length);
int main(int argc, char** argv) {
int n;
vector<int> arr;
vector<int>::iterator i;
cin >> n;
arr.resize(n);
for(i=arr.begin();i<arr.end();i++){
cin >> *i;
}
BubbleSort(arr,n);
for(i=arr.begin();i<arr.end();i++){
cout << *i << " ";
}
return 0;
}
void BubbleSort(vector<int> &arr,int length)
{
for(int i=0;i<length-1;i++){
for(int j=0;j<length-i-1;j++){
if(arr[j]>arr[j+1]){
int temp;
temp=arr[j+1];
arr[j+1]=arr[j];
arr[j]=temp;
}
}
}
}