欢迎使用CSDN-markdown编辑器

来源:互联网 发布:好的监控软件 编辑:程序博客网 时间:2024/06/03 19:34
#include <iostream>#include <vector>#include <queue>#include <set>#include <map>#include <iostream>#include <windows.h>using namespace std;#define MAXSIZE 10typedef struct{    int r[MAXSIZE+1];    int length;}SqList;int InitList(SqList *L){        L->length=0;        return true;}void swap(SqList *L,int i,int j){    int temp=L->r[i];    L->r[i]=L->r[j];    L->r[j]=temp;}void BubbleSort0(SqList *L)/*不成熟的冒泡排序算法*/{    for(int i=0;i<L->length;i++)    {        for(int j=i+1;j<L->length;j++)        {            if(L->r[i]>L->r[j]) swap(L,i,j);        }    }}void BubbleSort1(SqList *L)/*优化后的冒泡,减少了不必要的交换*/{    int flag=1;    for (int i=0;(i<L->length)&&flag;i++)    {        flag=0;        for(int j=L->length-2;j>=i;j--)        {            if(L->r[j]>L->r[j+1])             {                    swap(L,j,j+1);                    flag=1;            }        }    }}void SelectSort(SqList *L)/*选择排序S*/{    int min;    for(int i=0;i<L->length;i++)    {        min=i;        for (int j=i+1;j<L->length;j++)        {            if (L->r[min]>L->r[j])            {                min=j;            }        }        if (min!=i)        {            swap(L,i,min);        }    }}void InsertSort(SqList *L)/*插入排序*/{    for (int i=1;i<L->length;i++)/*从数组中第二个数开始遍历*/    {        //int temp=L->r[i];/*放入临时变量中*/        //for (int j=i-1;j>=0;j--)        //{        //  if (temp<=L->r[j])        //  {        //      L->r[j]=L->r[j-1];                  //    }     //   }        //         //L->r[i]=temp;        int j = i;        int target = L->r[i];        while (j > 0 && target < L->r[j-1])        {            L->r[j] = L->r[j-1];            j--;        }        L->r[j] = target;    }    }void ShellSort(SqList *L){}//第16周周五下午2:00,综合楼C105void HeapSort(SqList *L){    int i;    for(i=L->length/2;i>0;i--)         HeapAdjust(L,i,L->length);    for (i=L->length;i>1;i--)    {        swap(L,1,i);        HeapAdjust(L,1,i-1);    }}int main(){    SqList L;    InitList(&L);    L.length=4;    for(int i=0;i<L.length;i++)    {        cin>>L.r[i];    }    InsertSort(&L);    for(int i=0;i<L.length;i++)    {        cout<<L.r[i]<<endl;    }    system("pause");}
0 0