演算法強化 陣列和動態記憶體

2021-10-10 13:30:30 字數 2598 閱讀 9674

int

*presum

(int

*nums,

int numsize,

int*returnsize)

int i;

int*brr =

(int*)

malloc

(numssize*

sizeof

(int))

;//用於存放字首和

brr[0]

= nums[0]

;//第乙個值不需要相加

for(i =

1; i < numsize; i++

)*returnsize = i;

return brr;

}

//該演算法的時間複雜度為o(n),空間複雜度o(n).

法二:利用原陣列儲存字首和

int

*presum2

(int

* nums,

int numssize,

int* returnsize)

該演算法的時間複雜度為o(n),空間複雜度為o(1).

int

arrpairs

(int

* nums,

int numssize)}}

return tmp;

}

時間複雜度為o(n^2),o(1).

int

*shuffle

(int

* nums,

int numssize,

int* returnsize)

*returnsize = numssize;

return brr;

}

該演算法的時間複雜度為o(n),空間複雜度為o(n).

int

xoroperation

(int n,

int start)

return tmp;

}

該演算法的時間複雜度為o(n),空間複雜度為o(1).

int

game

(int

* guess,

int guesssize,

int*answer,

int answersize)

return sum;

}

int

mincount

(int

* arr,

int n)

return num;

}

int

findrepeatnumber

(int

* nums,

int numssize)

}return-1

;}

該演算法時間複雜度為o(n^2),空間複雜度為o(1).

法二:根據資料取值範圍特徵(0~n-1), 可以讓每個資料存放在和本身值相同的下標, 例如數字 2 存放到 2 下標, 構造乙個雜湊表. 在存放的過程中, 如果下標中存放的資料和當前相同則找到.

**實現:

int

findrepeatnumber

(int

* nums,

int numssize)

else

]return-1

;}

該演算法的時間複雜度為o(n),空間複雜度為o(1).

int

sumoddlengthsubarrays

(int

*arr,

int arrsize)}}

return sum;

}

法一:利用c語言庫函式qsort(快速排序)進行排序

**實現:

int

int_cmp

(const

void

* vp1,

const

void

* vp2)

void

quicksort

(int

*arr,

int len)

法二:利用c++的stl中的sort進行排序

#include

using namespace std;

intmain()

;sort

(arr,arr+

sizeof

(arr)

/sizeof

(arr[0]

));for

(int i =

0; i <

sizeof

(arr)

/sizeof

(arr[0]

); i++

)return0;

}

C 動態記憶體和動態陣列

全域性物件在程式啟動時分配,在程式結束時銷毀。區域性自動物件,當我們進入其定義所在的程式塊時被建立,在離開塊時銷毀。區域性 static 物件在第一次使用前分配,在程式結束時銷毀 靜態記憶體用來儲存區域性static物件,類static 資料成員,以及定義在任何函式之外的變數。棧記憶體用來儲存定義在...

陣列的動態記憶體分配

1.已知陣列的第二維進行動態記憶體分配 方式 利用陣列指標 include using namespace std intmain int argc,char ar delete p 釋放記憶體 return0 2.1已知陣列的第一維進行動態記憶體分配 方式 利用指標陣列 include using...

陣列的動態記憶體分配(new delete)

假設我們要為乙個字元陣列 乙個有 20 個字元的字串 分配記憶體,我們可以使用上面例項中的語法來為陣列動態地分配記憶體,如下所示 char pvalue null 初始化為 null 的指標 pvalue newchar 20 為變數請求記憶體要刪除我們剛才建立的陣列,語句如下 delete pva...