亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

用C語言舉例講解數據結構中的算法復雜度結與順序表

2020-01-26 14:43:01
字體:
來源:轉載
供稿:網友

數據結構算法復雜度
1、影響算法效率的主要因素
(1)算法采用的策略和方法;

(2)問題的輸入規模;

(3)編譯器所產生的代碼;

(4)計算機執行速度。


2、時間復雜度

// 時間復雜度:2n + 5 long sum1(int n) {   long ret = 0; //1   int* array = (int*)malloc(n * sizeof(int)); //1   int i = 0; //1      for(i=0; i<n; i++) //n   {     array[i] = i + 1;   }      for(i=0; i<n; i++) //n   {     ret += array[i];   }      free(array); //1      return ret; //1 }   //時間復雜度: n + 3 long sum2(int n) {   long ret = 0; //1   int i = 0; //1      for(i=1; i<=n; i++) //n   {     ret += i;   }      return ret; //1 }  //時間復雜度: 3 long sum3(int n) {   long ret = 0; //1      if( n > 0 )   {     ret = (1 + n) * n / 2; //1   }      return ret; //1 } 

隨著問題規模n的增大,它們操作數量的差異會越來越大,因此實際算法在時間效率上的差異也會變得非常明顯!

2016224143347658.png (722×422)

判斷一個算法的效率時,往往只需要關注操作數量的最高次項,其它次要項和常數項可以忽略。

2016224143415099.jpg (675×348)

在沒有特殊說明時,我們所分析的算法的時間復雜度都是指最壞時間復雜度。

2016224143440710.jpg (669×394)

 3、空間復雜度

//空間復雜度:12 + n long sum1(int n) {   long ret = 0; //4   int* array = (int*)malloc(n * sizeof(int)); //4 + 4 * n   int i = 0; //4      for(i=0; i<n; i++)   {     array[i] = i + 1;   }      for(i=0; i<n; i++)   {     ret += array[i];   }      free(array);      return ret; }   //空間復雜度: 8 long sum2(int n) {   long ret = 0; //4   int i = 0; //4      for(i=1; i<=n; i++)   {     ret += i;   }      return ret; }  //空間復雜度: 4 long sum3(int n) {   long ret = 0; //4      if( n > 0 )   {     ret = (1 + n) * n / 2;   }      return ret; } 

    多數情況下,算法執行時所用的時間更令人關注,如果有必要,可以通過增加空間復雜度來降低時間復雜度,同理,也可以通過增加時間復雜度來降低空間復雜度,具體問題,具體分析。


數據結構順序表
表是具有相同類型的n(n >= 0)個數據元素的有限序列,即:

  •     線性表(List)是零個或多個數據元素的集合
  •     線性表中的數據元素之間是有順序的
  •     線性表中的數據元素個數是有限的
  •     線性表中的數據元素的類型必須相同
//seq_list.h #ifndef _SEQ_LIST_H_ #define _SEQ_LIST_H_  struct seq_list {   int capacity;   int length;   unsigned int *node; };  struct seq_list* seq_list_create(int capacity); int seq_list_capacity(struct seq_list* list); int seq_list_length(struct seq_list* list); int seq_list_insert(struct seq_list* list, int position, void* data); void* seq_list_get(struct seq_list* list, int position); void* seq_list_remove(struct seq_list* list, int position); void seq_list_clear(); void seq_list_destroy(struct seq_list* list);  #endif //seq_list.c #include "seq_list.h" #include <stddef.h> #include <malloc.h>  struct seq_list* seq_list_create(int capacity) {   int i = 0;   struct seq_list* ret = NULL;   if (capacity >= 0)   {     ret = (struct seq_list*) malloc(sizeof(struct seq_list) + sizeof(unsigned int) * capacity);     if (ret != NULL)      {       ret->capacity = capacity;       ret->length = 0;       ret->node = (unsigned int*) (ret + 1);     }   }   return ret; }  int seq_list_insert(struct seq_list* list, int position, void* data) {   int i = 0;   int ret;   ret = (list != NULL);   ret = ret && position >= 0 && position < list->capacity;   ret = ret && list->length < list->capacity;   if (ret)   {     for (i = list->length; i > position; i--)     {       list->node[i] = (list->node[i - 1]);     }     list->node[i] = (unsigned int)data;     double *p = (double *)data;     list->length++;   }   return ret; }  void* seq_list_get(struct seq_list* list, int position) {   void* ret = NULL;      if (list != NULL && position >= 0 && position < list->length)   {     ret = (void *)list->node[position];   }   return ret; }  void* seq_list_remove(struct seq_list* list, int position) {   void* ret = NULL;   int i = 0;      if (list != NULL && position >= 0 && position < list->length)   {     int i = 0;      ret = seq_list_get(list, position);     for (i = position + 1; i < list->length; i++)     {       list->node[i - 1] = list->node[i];     }     list->length--;   }   return ret; }  int seq_list_capacity(struct seq_list* list) {   int ret = -1;   if (list != NULL)   {     ret = list->capacity;   }   return ret; }  int seq_list_length(struct seq_list* list) {   int ret = -1;   if (list != NULL)   {     ret = list->length;   }   return ret; }  void seq_list_clear(struct seq_list* list) {   if (list != NULL)   {     list->length = 0;   } }  void seq_list_destroy(struct seq_list* list) {   free(list);   list = NULL; } //seq_list_main.c #include <stdio.h> #include "seq_list.h"  int main(void) {   struct seq_list* list = seq_list_create(100);    double *p = NULL;   int ret = 0;    double a = 1.1;   double b = 2.2;   double c = 3.3;   double d = 4.4;   double e = 5.5;      seq_list_insert(list, 0, &a);   seq_list_insert(list, 1, &b);   seq_list_insert(list, 2, &c);   seq_list_insert(list, 3, &d);   seq_list_insert(list, 4, &e);    printf("list capacity = %d, length = %d/n", seq_list_capacity(list), seq_list_length(list));   p = (double *)seq_list_get(list, 0);   if (p != NULL)   {     printf("%lf/n", *p);   }      p = (double *)seq_list_get(list, 3);   if (p != NULL)   {     printf("%lf/n", *p);   }    p = (double *)seq_list_remove(list, 3);   if (p != NULL)   {     printf("remove data %lf, index at 3 , after length: %d/n", *p, seq_list_length(list));   }      p = (double *)seq_list_get(list, 3);   if (p != NULL)   {     printf("after remove, index at 3: %lf/n", *p);   }    seq_list_clear(list);   printf("after clear, list length is %d/n", seq_list_length(list));    seq_list_destroy(list);    return 0; } 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91亚洲国产成人精品性色| 在线成人激情黄色| 国产视频自拍一区| 91免费国产视频| 97免费中文视频在线观看| 色偷偷偷综合中文字幕;dd| 亚洲国产精彩中文乱码av在线播放| 91av中文字幕| 久久久久久97| 欧美日韩亚洲国产一区| 久久亚洲精品国产亚洲老地址| 亚洲一区二区久久久久久| 粉嫩老牛aⅴ一区二区三区| 国产免费成人av| 国产日韩一区在线| 国产欧美一区二区三区久久人妖| 亚洲性猛交xxxxwww| 日韩中文字幕在线精品| 日韩精品免费电影| 国产一区在线播放| 久久精品一偷一偷国产| 国产精品福利久久久| 55夜色66夜色国产精品视频| 国产精品爱啪在线线免费观看| 欧美色道久久88综合亚洲精品| 日韩电影中文字幕在线| 国产日韩欧美日韩大片| 中文字幕亚洲综合久久筱田步美| 日韩在线视频免费观看| 国产精品久久婷婷六月丁香| 日韩精品在线第一页| 精品国产自在精品国产浪潮| 亚洲国产成人91精品| 久久久久久久久国产精品| 日韩一区二区福利| 欧美黑人极品猛少妇色xxxxx| 91精品国产91久久久| 国产精品九九久久久久久久| 日韩成人激情视频| 亚洲精品久久久久国产| 亚洲福利在线看| 91精品国产高清久久久久久久久| 17婷婷久久www| 亚洲精品www久久久| 超碰日本道色综合久久综合| 久久在线精品视频| 久久综合国产精品台湾中文娱乐网| 热99精品里视频精品| 久久久久久久国产| 在线日韩日本国产亚洲| 日韩av在线网站| 成人福利视频网| 国产午夜精品理论片a级探花| 成人黄色在线免费| 日韩国产高清污视频在线观看| 日韩av最新在线观看| 亚洲美女喷白浆| 91久久国产精品91久久性色| 久久亚洲私人国产精品va| 日韩亚洲一区二区| 日韩精品中文字幕有码专区| 69av成年福利视频| 日韩欧美国产黄色| 国产成人97精品免费看片| 亚洲第一免费网站| 亚洲伦理中文字幕| 97国产suv精品一区二区62| 92版电视剧仙鹤神针在线观看| 日本免费在线精品| 91黑丝高跟在线| 欧美日韩性生活视频| 亚洲人永久免费| 欧美黄色性视频| 亚洲一二在线观看| 韩国精品美女www爽爽爽视频| 久久亚洲精品国产亚洲老地址| www.日韩系列| 另类色图亚洲色图| 91精品久久久久久久久中文字幕| 国产成人啪精品视频免费网| 久久久999精品| 亚洲跨种族黑人xxx| 国产精品午夜国产小视频| 精品国产乱码久久久久久天美| 亚洲性线免费观看视频成熟| 欧美日韩免费区域视频在线观看| 日韩综合视频在线观看| 日韩美女视频中文字幕| 亚洲欧美资源在线| 欧美孕妇毛茸茸xxxx| 日韩一二三在线视频播| 国产精品视频免费观看www| 精品久久久国产精品999| 亚洲深夜福利在线| 亚洲高清一二三区| 久久久www成人免费精品| 91av在线播放| 国产日韩精品综合网站| 国产欧美日韩91| 欧美日韩中文字幕综合视频| 7m精品福利视频导航| 国产成人精品免费视频| 91网站免费看| 成人午夜激情网| 国内揄拍国内精品少妇国语| 国产在线日韩在线| 久久久久女教师免费一区| 欧美在线观看网址综合| 欧美中文字幕在线视频| 日韩在线视频网| 国产日韩欧美另类| 国产精品久久久久不卡| 在线观看欧美日韩| 久久久久久亚洲精品| 久久在线免费视频| 久久亚洲成人精品| 成人在线观看视频网站| 欧美区在线播放| 一区二区三区久久精品| 91精品久久久久久久久久久久久久| 亚洲精品资源美女情侣酒店| 久久久久久久成人| 久久久亚洲成人| 久久av资源网站| 亚洲欧美精品伊人久久| 国产精品视频午夜| 中文字幕一区二区三区电影| 亚洲国产精久久久久久| 欧美精品videossex性护士| 欧美日本黄视频| 国语自产精品视频在线看抢先版图片| 亚洲综合中文字幕68页| 久久久久久久久国产| 欧洲美女7788成人免费视频| 国产美女直播视频一区| 国产精品欧美一区二区| 久久精品这里热有精品| 国产性猛交xxxx免费看久久| 日韩在线视频网站| 亚洲欧美一区二区三区情侣bbw| 欧美成人午夜影院| 2020久久国产精品| 中文字幕不卡av| 欧美精品18videos性欧| 久久精品色欧美aⅴ一区二区| 不卡毛片在线看| 欧美精品18videosex性欧美| 日韩美女激情视频| 精品久久久精品| 久久99国产精品自在自在app| 国内精久久久久久久久久人| 久久人人爽亚洲精品天堂| 91国语精品自产拍在线观看性色| 国产日韩欧美自拍| 久久色在线播放| 欧美激情欧美狂野欧美精品| 欧美激情成人在线视频| 97精品视频在线播放| 欧美成人精品一区| 久久久久五月天| 国产精品∨欧美精品v日韩精品| 欧美美最猛性xxxxxx| 国产精品吴梦梦| 成人午夜一级二级三级|