《算法笔记》4.1

2019-08-27  本文已影响0人  想要金虎的rui酱

4.1.1选择排序

void selectSort()
{
     for(int i=0;i<n;i++)
   {
          int k=i;
          for(j=i;j<n;j++)//从i到n的最小值
        {
               if(A[j]《A[k])
             {
                  k=j;
              }
         }
        int temp=A[i];
        A[i]=A[k];
        A[k]=temp;
     }
}

4.1.2插入排序

int A[max],n;//数组下标从0-n-1
void insertSort()
{
       for(int i=1;i<n;i++)
       {
            int temp=A[i];//往后移的过程会把它给挤掉,提前保存,找到位置放在那里
            j=i;
           while(j>0&&temp<A[j-1])
           {
                    A[j]=A[j-1];//比temp大就往后移
                    j--;//继续往前寻找
            }
            A[j]=temp;//最后的位置temp<A[j-1]条件没有满足,就是它的位置
       } 
}

4.1.3排序题与sort函数的应用

6.9.6关于sort函数

#include<algorithm>
using namespace std;
sort(首元素地址(必填),尾元素地址的下一个地址(必填),比较函数(非必填))
//递减排序
bool cmp(int a ,int b)
{
       return a>b;
}
sort(a,a+4,cmp);、
//比较字符串(按字典序从小到大)
bool cmp(Student a,Sudent b)
{
    return strcmp(a.name,b.name)<0;
}
//定义结构体
struct node{
     int x,y;
}ssd[10];
//排序函数
bool cmp(node a,node b)
{
       return a.x>b.x;
}
//如果想x先从大到小排,但x相等的时候y按从小到大排
bool cmp(node a,node b)
{
    if(a.x!=b.x) return a.x>b.x;
   else return a.y<b.y;
}
//main函数中的使用
sort(ssd, ssd+4,cmp);

排序题中的小技巧

上一篇 下一篇

猜你喜欢

热点阅读