題目詳見演算法導論7-2習題,在這裡我就不再贅述。
本文分為三個部分,第一部分是寫我改進演算法的思路,第二部分是演算法實現,第三部分是程式執行結果。
思路
《演算法導論》裡介紹的partition沒有考慮元素相等的情況,但是就算存在相同元素快排其實也可以適用的,只是相等的元素當作大於key的元素處理了。習題7-2要求經過partition函式之後與陣列變為三個部分,最左邊的是小於key(就是原演算法裡的a[r]),中間部分等於key,最右邊大於key。聯想到原來的partition函式採用乙個變數i來記錄小於key的元素的個數,我想可不可以也採用乙個變數t來記錄小於等於key的元素個數,其中i+1到t是等於key的元素。因此,當出現小於或者等於key的元素t加一,i也要加一。然後按照原來的思想exchange(a[t],a[j])。但是又到了解決問題的關鍵,只是這樣交換一次還不能達到我們的目的,我們必須注意到這個現象從p到i是小於key的元素,從i+1到t是等於key的元素,我們經過exchange(a[t+1],a[j])之後a[t+1]是乙個小於等於key的元素,若其小於key我們需要exchange(a[t],a[i]),將小於key的元素交換到最左邊,這樣我們就成功的將陣列裡元素分為三部分。
演算法實現
int *partition(int *a,int p,int r)
}else if(a[j]==key)
}temp=a[r]; // i+1到t+1等於key
a[r]=a[t+1];
a[t+1]=temp;
int *po=(int *)malloc(sizeof(int)*2); //儲存返回值
*po=i+1;
*(po+1)=t+1;
return po;
}void quicksort(int *a,int p,int r)
}
jQuery1 9 1針對checkbox的調整
在jquery 1.8.x中的版本,我們對於checkbox的選中與不選中操作如下 判斷是否選中 checkbox prop checked 設定選中與不選中狀態 checkbox attr checked true checkbox attr checked false 但此方法在jquery1....
jQuery1 9 1針對checkbox的調整
在jquery 1.8.x中的版本,我們對於checkbox的選中與不選中操作如下 判斷是否選中 checkbox prop checked 設定選中與不選中狀態 checkbox attr checked true checkbox attr checked false 但此方法在jquery1....
selenium(4) 針對鍵盤的操作
1 usr bin env python2 coding utf 8 34 5 title 6 time 2020 6 19 13 33 7 author xinhua 8 blog 9 10from time import sleep 1112 from selenium import webdr...