陣列相關演算法

2021-07-22 09:26:32 字數 1426 閱讀 5312

問題1、列印1到最大的n位數

//解法

一、直接求出n位數的最大值,然後直接從1開始列印

//缺陷:可能會溢位,大數問題

void print1tomax(int n)

for(int i=1;icout

<" ";

}cout

二、在字串上模擬數字加法

void print1tomax(int n)

}bool increment(char *number)

if(nsum>=10)

}else

}return isoverflow;

}void printnumber(char *number)

//解法

三、可以發現這就是n個0--9的全排列,只是0開頭不列印出來。

void printnumber(int *number,int len)

cout

<< " ";

}void permutationall(int a, int len, int index)

for (int i = 0; i < 10; i++)

}void print(int n)

}

問題2、調整陣列順序使奇數字於偶數前面

void changepos(int a,int n)

}

問題3、尋找最小的k個數

//解法

一、可以基於partition函式來解決,但是會修改原來的陣列

int partition(int a,int low,int high)

void findleastknum(int a,int n,int k)else

}for(int i=0;icout

<" ";

cout

二、特別適合處理海量資料

void findleastknum(int a, int n, int k)

}for (auto c : intset)

cout

<< c << " ";

cout

<< endl;

}

問題4、把陣列排成最小的數。

例如給定陣列,則列印這3個數字能排成的最小數字321323

int compare(const

void *str1, const

void *str2)

int main(void)

; qsort(str, 3, sizeof(char*),compare);

for (int i=0;i<3;i++)

cout

<< str[i]<"pause");

return

0;}

陣列相關演算法

1.尋找最小的k個數 有n個整數,請找出其中最小的k個數,要求時間複雜度盡可能低。全部排序。使用快速排序演算法排序之後並且輸出最小的k個數,時間複雜度為o nlogn def quick sort array,left,right if left right return low left high...

陣列求和相關演算法

問題1 輸入乙個陣列,在陣列中查詢兩個數,使得它們的和正好是target void findtwosum int a,int n,int target 問題2 輸入整數sum,找出所有和為sum的連續整數序列,至少包含兩個。例如輸入15,由於1 2 3 4 5 4 5 6 7 8 15,所有結果列印...

陣列的相關演算法

目錄 1 陣列找最值 2 陣列統計 求總和 均值 統計偶數個數等 3 反轉 4 複製 5 查詢 6 排序 1 陣列中找最值 思路 1 先假設第乙個元素最大 最小 2 然後用max min與後面的元素一一比較 示例 int arr 找最大值 int max arr 0 for int i 1 imax...