7-1 快速排序
作者 朱允剛
單位 吉林大學
給定包含n個元素的整型數(shù)組a[1],a[2],…,a[n],利用快速排序算法對其進行遞增排序,請輸出排序過程,即每次Partition之后的數(shù)組。每次選擇所處理的子數(shù)組的第一個元素作為基準元素。
輸入格式:
輸入為兩行,第一行為一個整數(shù)n(1
輸出為若干行,每行依次輸出Partition后的數(shù)組,每個元素后一個空格。
輸入樣例:
5
4 5 3 2 1
輸出樣例:
2 1 3 4 5
1 2 3 4 5
1 2 3 4 5
#includeusing namespace std;
int array[1005],n;
void print(){for(int i=1;i<=n;++i){cout<int mid=a;
a=b;
b=mid;
}
int Partition(int array[],int left,int right){int location=left;
array[0]=array[left];
while(leftwhile(leftarray[0]) --right;
while(leftif(leftint position=Partition(array,left,right);
print();
quicksort(array,left,position-1);
quicksort(array,position+1,right);
}
}
int main()
{cin>>n;
for(int i=1;i<=n;++i){cin>>array[i];
}
quicksort(array,1,n);
print();
return 0;
}
7-2 堆排序
作者 嚴華云
單位 湖州師范學院
對n個數(shù),要求用堆排序(大堆)對其進行排序。
輸入格式:
第一行一個n(n<1000)。第二行給出n個數(shù)。
輸出格式:
輸出n行,每行n個數(shù)。第一行表示將n個數(shù)(將n個數(shù)看成一棵樹)變成大堆后的結果,第二行表示將上次結果的根節(jié)點交換到現(xiàn)有節(jié)點的最后一個節(jié)點(然后將除最后一個節(jié)點的數(shù)看成一顆樹),然后將該剩余節(jié)點樹從新變成大堆后的結果輸出(包括交換到最后的節(jié)點),依次類推。
輸入樣例:
6
7 1 6 4 3 5
輸出樣例:
7 4 6 1 3 5
6 4 5 1 3 7
5 4 3 1 6 7
4 1 3 5 6 7
3 1 4 5 6 7
1 3 4 5 6 7
#includeusing namespace std;
int n,x;
void print(vector& nums){for(int i=0;icout<& nums, int i, int len) {for (; (i<< 1) + 1<= len;) {int lson = (i<< 1) + 1;
int rson = (i<< 1) + 2;
int large;
if (lson<= len && nums[lson] >nums[i]) {large = lson;
} else {large = i;
}
if (rson<= len && nums[rson] >nums[large]) {large = rson;
}
if (large != i) {swap(nums[i], nums[large]);
i = large;
} else {break;
}
}
}
void buildMaxHeap(vector& nums, int len) {for (int i = len / 2; i >= 0; --i) {maxHeapify(nums, i, len);
}
}
void heapSort(vector& nums) {int len = (int)nums.size() - 1;
buildMaxHeap(nums, len);
print(nums);
for (int i = len; i >= 1; --i) {swap(nums[i], nums[0]);
len -= 1;
maxHeapify(nums, 0, len);
print(nums);
}
}
int main(){cin>>n;
vectornums(n);
for(int i=0;icin>>x;
nums[i]=x;
}
heapSort(nums);
}
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧