C語言:時間復雜度為O(1)的兩則小程序
這兩個例子都是用了同一種編程思想:對於字符的操作,char類型最多可以有256個字符,但是可以滿足對大小寫、數字、其他基本字符的使用。利用字符的ascii碼值作為大小為256的數組的下標,將要查找的內容/條件填充到數組裡,這樣通過查看對應下標的內容,即可實現相應操作。
這就是時間復雜度為O(1)的編程思想,這也是基於哈希表的一種,關於哈希表請自己查看。
下面看第一個例子:當輸入小寫字母a,輸出大寫字母Z,當輸入小寫字母b,輸出大寫字母Y,...當輸入小寫字母z,輸出大寫字母A
1 #include<stdio.h>
2 #include<string.h>
3
4 void change(char arr[],int ch){
5 int i=0;
6 int j=90;
7 for(i=97;i<123;i++){ //對arr[256]中a-z的下標裡逐個放入Z-A
8 arr[i]=j--;
9 }
10 printf("%c\n",arr[ch]);
11 }
12
13 int main(){
14 char arr[256]= {0};
15 int ch =0;
16 ch=getchar();
17 change(arr,ch);
18 return 0;
19 }