關於快速排序的邏輯原理是這樣的:
將兩個指標i,j分別指向表的起始和最後的位置,t為臨時變數。
反覆操作以下兩步:
(1)j逐漸減小,並逐次比較j指向的元素和目標元素的大小,若p(j)(2)i逐漸增大,並逐次比較i指向的元素和目標元素的大小,若p(i)>t則交換位置。
直到i,j指向同乙個值,迴圈結束。
下面是原始碼
#include #include void swap(int a,int i,int j) }
/* 快速排序 */
void quick_sort(int x,int left, int right)
swap(x, left, temp);
quick_sort(x,left, temp-1);
quick_sort(x,temp+1, right);
}int main()
; int i=0,len;
printf("start ....\n");
len=(int)sizeof(number)/sizeof(*number);
printf("len =%d\n",len);
quick_sort(number,0,9);
for(i=0;i<10;i++)
printf("\n");
printf("end ....\n");
exit(0);
}
**已經編譯除錯過了,親測可行。 HashMap排序的乙個例子
已知乙個 hashmap 集合,user 有 name string 和 age int 性。請寫乙個方法實現對 hashmap 的排序功能,該方法接收 hashmap為形參,返回型別為 hashmap,要求對 hashmap 中的 user 的 age 倒序進行排序。排序時 key value 鍵...
就乙個快速排序。。。
話說,每次寫題的時候我都是呼叫stl的sort,自己卻還是很難快速寫出乙個快排。正好作業布置這個了。就寫一下,熟練一下,順便背一下記住。萬一以後面試問到了,也可以秒了。include include include using namespace std const int maxn 10000 5...
乙個簡單的例子說明原子性操作
原子性操作例子舉例 a想要從自己的帳戶中轉1000塊錢到b的帳戶裡。那個從a開始轉帳,到轉帳結束的這乙個過程,稱之為乙個事務。在這個事務裡,要做如下操作 1.從a的帳戶中減去1000塊錢。如果a的帳戶原來有3000塊錢,現在就變成2000塊錢了。2.在b的帳戶裡加1000塊錢。如果b的帳戶如果原來有...