算法(一)排序算法(选择排序、冒泡排序)
排序算法
选择排序
①.在未完成排序的部分选择最小(大)的数
②.将该数字与完成排序的部分下一个数交换位置(或者说是未完成部分的第一个)
③.重复①②直到排序完成
使用选择排序进行排序图解(从小到大)

①选择未完成排序部分的最小值(红色方框)

②与未完成部分的第一个进行交换

③此时排序未完成,重复上面的步骤

后续步骤图解如下:

选择排序代码
#include<iostream>
using namespace std;
int main()
{
int len =8;
int a[8]={6,3,5,2,1,8,4,7};//初始化数组
/*int a[len];//随机生成数组
for(int i=0;i<len;i++)
{
a[i]=rand()%len;
}*/
cout<<"初始状态:";
for(int i =0;i<len;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
for(int i=0;i<len;i++)//i为此时未完成排序部分的第一个,每次的最小值与他进行交换
{
int min=0xfffffff;
int index = i;
for(int j=i;j<len;j++)//找到最小值的下标
{
if(a[j]<min)
{
index=j;
min=a[j];
}
}
int temp = a[index];//i和index位置交换
a[index] = a[i];
a[i] = temp;
for(int i =0;i<len;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
}
return 0;
}
运行结果

冒泡排序
冒泡排序就是数字像水中的气泡一样在向上的过程中逐渐变大(小),所以叫冒泡排序
①比较两个数的大小,如果这两个数排序不正确则交换位置
②将该进行比较的数字区域移向下一个位置,重复①直到到达已经排序好的部分。
③重复步骤①②直到全部排序完成
使用冒泡排序进行排序图解(从小到大)

①比较两个数的大小,因为是从小到大排序,而3却在6的右边,所以交换两个的位置

②将比较区域移向下一个位置重复①

经过这一次循环后8已经在他正确的位置。重复①②直到排序完成。
冒泡排序代码
#include<iostream>
using namespace std;
int main()
{
int len =8;
int a[8]={6,3,5,2,1,8,4,7};
/*int a[len];
for(int i=0;i<len;i++)
{
a[i]=rand()%len;
}*/
for(int i = len-1;i>0;i--)//i为已经排序好的位置,每次排序好一个数字所以i=i-1
{
for(int j=0;j<i;j++)//每次的比较区域为j和j+1,直到i
{
if(a[j]>a[j+1])
{
int temp = a[j+1];
a[j+1] = a[j];
a[j] = temp;
}
}
}
for(int i =0;i<len;i++)
{
cout<<a[i]<<" ";
}
return 0;
}
本人水平有限,如有错误欢迎指正。
(-)!!!markdown还不是很会用。这怎么调图片大小啊...一
浙公网安备 33010602011771号