欢迎光临散文网 会员登陆 & 注册

数据结构与算法基础(青岛大学-王卓)

2023-02-17 15:49 作者:SSSkikiy  | 我要投稿

#include <stdio.h>

#include <stdlib.h>


#define MAXSIZE 20


typedef int KeyType; // 设置关键字类型


typedef struct{

  KeyType key; // 关键字

}SListType;


typedef struct{

  List item[MAXSIZE+1]; // 哨兵类型

  int length;

}Slist;


// 初始化数据

void initSList(Slist *L,int length){

  L->item[0].key = 0;

  L->length = length;

  for(int i=1;i<=L->length;i++){

    printf("SList[%d]=%d\n",i,L->item[i].key=rand());

  }

}


// 直接插入排序

void insertSort(Slist *L){

  int i=2,j=0;

  for(i=2;i<=L->length;i++){

    // 当前大于等于前一个直接跳出循环

    if(L->item[i].key >= L->item[i-1].key) continue;

    // 把当前值赋值到哨兵位置

    L->item[0].key = L->item[i].key;

    // 当前小于前一个,把当前位置的值替换成前一个值

    for(j=i-1;L->item[j].key>L->item[0].key;j--){

      L->item[j+1].key = L->item[j].key;

    }

    // 终止判断时,已经往前移了一位,所以才要+1

    L->item[j+1].key = L->item[0].key;

  }

}


// 遍历取出数据

void printfSList(Slist* L){

  for(int i=1;i<=L->length;i++){

    printf("orderSlist[%d]=%d\n",i,L->item[i].key);

  }

}


int main(){

  Slist La;

  initSList(&La,10);

  insertSort(&La);

  printfSList(&La);

  system("pause");

  return 0;

}

数据结构与算法基础(青岛大学-王卓)的评论 (共 条)

分享到微博请遵守国家法律