改进版冒泡排序:使用pos记录bound(边界)
#include "iostream"
using namespace std;
void sort(int arr[],int n)
{
int pos=n;
while(pos!=0)
{
int bound=pos;
pos=0;
for(int i=1;i<bound;i++)
{
if(arr[i]>arr[i+1])
{
int temp=arr[i+1];
arr[i+1]=arr[i];
arr[i]=temp;
pos=i;
}
}
}
}
int main()
{
int arr[] = { 2,3,9,8,7 };
sort(arr, 5);
for (int i = 0; i < 5; i++)
{
cout << arr[i] << " ";
}
}
选择排序
#include "iostream"
using namespace std;
//不稳定的选择排序
void selectsort(int arr[],int n) //思想:每趟找最小值和未排好的第一个比较,寻找最小值。
{
for(int i=1;i<n;i++)
{
int min=i;
for(int j=i+1;j<=n;j++)
{
if(arr[min]>arr[j])
{
min=j;
}
}
if(min!=i)
{
int temp=arr[i];
arr[i]=arr[min];
arr[min]=temp;
}
}
}
int main()
{
int arr[] = { 2,3,9,8,7 };
selectsort(arr, 5);
for (int i = 0; i < 5; i++)
{
cout << arr[i] << " ";
}
}