C++实现冒泡排序
总之先百度一个冒泡排序的原理图。
根据冒泡排序可以实现数列的正序或倒序。
问题
排序算法代码本身没什么好说的。在最初对数组长度设置时选择先定义数组大小,再计算数组长度,算是一个比较常见的求法。
int arr[5];//数组个数已经定义好了
int len = sizeof(arr) / sizeof(arr[0]);
而对于函数则需要接收数组和长度len
bulbleSort(arr, len);
但是如果用户需要更改排序数列的个数,总不能再回到源码里去修改吧。
改进
所以我使用了动态分配的方式来实现输入数列个数
int num=0;
cin >> num;
int * arr = new int[num];
函数可以直接接收num而不用再计算数组长度
bulbleSort(arr, num);
这样的话,程序就能实现接收数组个数了。
源码
#include<iostream>
using namespace std;
void bulbleSort(int *arr,int len)
{
for(int i=0;i<len-1;i++)
{
for (int j = 0; j < len - 1 - i; j++)
{
if(arr[j]>arr[j+1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
cout << "result is: " << " ";
for (int l = 0; l < len; l++)
{
cout << arr[l] << " ";
}
cout << endl;
}
void input(int* arr, int len)
{
cout << "please input num" << endl;
for (int k = 0; k < len; k++)
{
cin >> arr[k];
}
cout << len << endl;
cout << "arr is: " ;
for (int l = 0; l < len; l++)
{
cout << arr[l] << " ";
}
cout << endl;
}
int main()
{
cout << "please input array num" << endl;
int num=0;
cin >> num;
int * arr = new int[num];
input(arr, num);
bulbleSort(arr, num);
delete[] arr;
system("pause");
}