1樓:淑婷
就是說,將多個字串的同一位置的字元按照26個字母的順序進行比對。a最小,z最大。
a < b;
aa < ab; 因為第二位置上,前面字串是a,後面字串是b,所以是小於關係,以此類推。
c語言排序演算法:快速排序:
1、假設我們給一個int陣列進行排序,陣列中數字初始序列為int a[9]=
2、分析快速排序的原理前,我們先宣告一些東西,首先設定一個臨時變數用來存放隨機取出陣列中的一個數,一般我們取陣列的第一個元素也就是說temp=a[0],同時設定兩個遊標分別指向陣列第一個元素和最後一個元素。
三、演算法的基本運算步驟為:1、依次比較陣列的後遊標所指與temp的大小,如果tempa[j],則停止移動,將a[j]賦值給a[i]
四、演算法的基本運算步驟為:2、依次比較陣列的前遊標所指與temp的大小,如果temp>a[i],則i++,直到遇到第一個temp
五、演算法運算步驟為:3、判斷i是否等於j,如果不相等則迴圈1、2步,直到i等於j,則完成一次快速排序。
六、演算法解釋:這樣一次迴圈做完後結果就是比temp小的儘量放在temp前,比temp大的儘量放在temp後。但是這種順序不是穩定的,會有調整。
因此快速排序不是一種穩定的排序。以下是實現程式。
七、一次排序完之後在分別對temp前的陣列元素和temp後的陣列元素分別進行快排,直到陣列元素個數為1則停止。
2樓:匿名使用者
你可以看看字典裡的單詞是怎麼排序的啊,先大寫字母,然後小寫字母吧比如a, a, ab, abc, ac排序應該是a, a, ab, abc, ac
先比較第一個字元,a比a在前,所以第一個是a,比較第二個,a只有一個字元,自然最小,後面是b比c小,所以ab,abc在ac前,ab,abc再比較,第三個字元,ab沒有了,就排在abc前
3樓:匿名使用者
字典序這個東東的來歷用我們查閱字典的經驗來解釋一定是最合適不過了...誰也不想..在一個混亂編輯的字典裡面查一個字..(- -不知道 有這樣的字典麼...)
這個...如果手邊有英文字典的話會更好...英文字典是沒有檢字表的...總是可以按現在翻頁面確定所要找的那個單詞在前面還是後面......
不知道小時侯大家有沒有在書的側頁寫過名字和班級......寫在那裡的字會有一種朦朧的感覺...
如果您的字典夠厚實的話...側頁也一定會有加深的標籤...如果再厚一點的話...標籤裡可以寫下a,b,c,d..如果更厚重一點的書...(我唯一見
過的一本是...某超級化學手冊..第78版..)會在側頁的位置壓出標籤...
(...記得中考的時候...政治歷史開卷...家人曾經在每本課本的章節的位置貼上商店裡用作**標籤的小紙條...嘿嘿...)
對於類似字典這樣需要經常進行檢索的東西...字典序的發明是很自然的...
人們為了可以找到單詞所在的位置...需要可以通過它的第一個字母就迅速確定它在書哪一塊...再根據第二個字母...再縮小這個範圍..
(其實我們不一定會用上每一個字母...只要限制的範圍很小就很好...)
這樣..一個英文單詞可以算是一個字串...(很多情況下我們可以直接對字串進行比較....這個時候用到的就是字典序了..)
漢語字典還是不太一樣的額...通常裡頭會有兩種檢字表...前面是拼音..後面用的是部首...後面這個還比較麻煩..得學上一陣子...雖然有時
候我們也不得不用它...
數字也可以作為特別的字串...這種情況下...如果我們用字典序進行比較...就有可能會出現下面這種情況...
"100">"1000"..(加引號的目的是為了區別數字..與數字串..)
這個好象沒道理的樣子.."1000"怎麼比"100"還要小一些呢...
事實上呢.在計算機裡...我們會這麼看..和之前一樣...我們會首先比較第一個字元...
這裡"1"='1'..(已經可以看到區別了..在數中..數字因為位置的不同會有不同的意義..而這裡.這種分別變的不一樣了...)
..一步比較...還沒有辦法分辨出它們的大小...只好再比較之後的數...
這種情況回直到最後一次嘗試...第一個字串已經空掉之前...
如果硬要比較的話...
空格的ascii碼值是32.(我覺得ascii碼還是用兩位十六進位制表示比較合適拉...咳咳..
書上告訴我..要在十六進位制前加"0x"..注意是零艾克絲..不是嘔哎克絲..額..雖然我也不知道是為啥.而且不得不承認這個還真不好用眼睛區
分.#24..0x20)..
當然這裡還不是空格...
真正意義上的虛無.. "" 的ascii碼值是0x00...
而數字0是0x30..
我們是不是應該給字典序...一個準確的數學描述吶- -...
(這個...我覺得是不是像s1 拉?..我覺得在這裡...它好象沒什麼幫助的樣子..不如用程式語言或者自然語言描述好...) 恩...這樣看來...排列中出現的順序並不是完全典型的字典序..如果把它看做字串..它的長度是固定的...並且每一個位置的元素總是取於 前面的一些數字... 好好理解理解....... 4樓:宋發元 #include #include main() for(i=1;i<5;i++) for(j=0;j<5-i;j++) if(strcmp(a[j],a[j+1])<0)for(i=0;i<5;i++) puts(a[i]);} c語言 輸入10個單詞,按字典順序輸出 不要複製不對的過來啊 5樓:示申僉 #include "stdio.h" #include "string.h" int main() ;char tem[30]=; int i,j; printf("請輸入10個單詞:"); for(i=0;i<10;i++)//輸入scanf("%s",str[i]); for(i=0;i<9;i++)//排序 for(j=i+1;j<10;j++) if(strcmp(str[i],str[j])>0)printf("這10個單詞按照字典排序輸出為:\n"); for(i=0;i<10;i++)// 輸出} 6樓:匿名使用者 這個冒泡程式可以改一下,不要交換串,太慢; 再加一個一維陣列存放這些字串的序號,只對這一維陣列排序 ,而原字串二維陣列不動,可大大加快排序速度。 #include "stdio.h" #include "string.h" int main() ;int tem[10]; // 存放串的序號 int i,j; printf("請輸入10個單詞:"); for(i=0;i<10;i++)//輸入for(i=0;i<9;i++)//排序 for(j=i+1;j<10;j++) if(strcmp(str[tem[i]],str[tem[j]])>0) printf("這10個單詞按照字典排序輸出為:\n"); for(i=0;i<10;i++)// 輸出}很明顯不再對字串進行復制或交換了,速度快多了。 x是16進位制輸出 8x是輸出8位 x是帶格式輸出,效果為在輸出前加0x.所以 這裡就是以16進位制輸出y值,並在前面加0x字首,如果輸出小於8位,那麼實際輸出8位,左側補空格.比如 y 0x20那麼會輸出 y 0x20 如果y 0x12345678 那麼會輸出 y 0x12345678 x a等價... c語言中的 是邏輯運算中的非運算。是c語言中的非運算子,在變數前面使用它,會構建非運算表示式,表示式的返回結果是個布林值 也就是隻有true或false 對變數使用時,如果變數不是布林資料型別,將會強制轉化為布林型別再使用,如整形變數123將被轉化為true,整形變數0將被轉化為false。擴充套件... 按位異或的意思。就是 不同為1,相同為0 1 1 0 0 1 1 0 0 0 舉個例子 3 5 3 0011 b 5 0101 b 0011 0101 0110 0110的十進位制數是6 所以3 5 6 是按位異或的意思,異或的意思就是相異為真,即0 0 0,1 1 0,1 0 1,0 1 1 比如...c語言中x是什麼意思c語言中x0是什麼意思
c語言中的,c語言中 是什麼意思
c語言中的是什麼作用的啊,C語言中的 是什麼作用的啊