排序
前面复习总结了两种排序算法,分别是 选择排序和冒泡排序,可能是忘记保存了,现在这个博客上找不到了
这里重点将其思想分别介绍一下:
选择排序: 这个我目前最熟悉的 一种排序方法,例子:int a[] = {6,3,1,4,2,5,10,8,9,0};
第一次将首个数字逐个与后面的数字比较,选出最小/大的
第二次将第二个数字逐个与后面的数字比较,选出第二小的
。。。。
冒泡排序:将相邻的数字一次比较,如,6和3比较,交换位置3,6,1,4,2.。。。
再将6和1比较, 得到3, 1, 6,4, 2.。。
6和4比较。。。最后一轮下来9排到最后
///依次比较相邻的两个数,按照从小到大或者从大到小的顺序进行交换。
简单插入排序:从整个待排序列中选出一个元素插入到已经有序的子序列中去,得到一个有序的、元素加一的子序列,
直到整个序列的待插入元素为0,则整个序列全部 有 序。
在实际的算法中,我们经常选择序列的第一个元素作为有序序列(因为一个元素肯定是有序的),
我们逐渐将后面的元素插入到前面的有序序列中,直到整个序列有序。
//每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。
#include <iostream>
using namespace std;
void swap(int& a, int& b)
{
int temp;
temp = a;
a = b;
b = temp;
}
int main()
{
int a[] = {6,3,1,4,2,5,10,8,9,0};
int len = sizeof(a)/sizeof(a[0]); //10
for(int i=1; i<=len; i++)
{
for(int j=0; j<=len -1; j++)//loop all elements before i
{
if(a[j]>a[i])
swap(a[j],a[i]);
}
}
for(int k =0; k<10; k++)
{
cout<<a[k]<<endl;
}
return 0;
}