算法入门篇(简单的排序算法)
一、简单选择排序
对一个序列A中的元素A[1]~A[n],令i从1到n枚举,进行n躺操作,每次操作从待排序部分[i,n]中选择最小的元素令其与A[i]进行交换,这样就会形成当前有序区间[1,i],重复操作n趟后,所有元素有序
核心代码如下:
for(int i=1;i<=n;i++){
int k=i;
for(int j=i;j<=n;j++){
if(A[j]<A[k]){//找最小元素的过程
k=j;
}
}
//内层for循环遍历完成A[k]为最小元素
int temp = A[i];
A[i]=A[k];
A[k]=temp;
}//外层循环结束,则序列有序
二、直接插入排序
对序列A中的n个元素A[1]~A[n],令i从2到n枚举,进行n-1趟操作,每趟操作中序列中[1,i-1]已经有序,而[i,n]无序,那么就在1~i-1,寻找某个位置j,使A[i]插入该位置后前1-i个元素有序,插入时A[j]~A[i-1]后移一位;
代码如下:
for(int i=2;i<=n;i++){
int temp = A[i],j=1;
while( j>1 && temp <A[j-1]){
A[j] = A[j-1];
j--;
}
A[j] = temp;
}
三、附C++中sort()函数使用
头文件:#include <algorithm>
命名空间调用:using namespace std;
sort(首元素地址,尾元素地址的下一个地址,比较函数(可不写))
比较函数cmp实现方式
cmp(<元素类型> a,<元素类型> b){
return a>b;//当a大于b时,a就在b之前
}
cmp中可加if判断做不同条件的返回,当要从大到小排序时就返回a>b,当要把小的放前面时就用a<b这样就会把小的值放前面
原文:https://www.cnblogs.com/zyq79434/p/14819782.html