#include?stdio.h

成都創(chuàng)新互聯(lián)專(zhuān)業(yè)為企業(yè)提供桑植網(wǎng)站建設(shè)、桑植做網(wǎng)站、桑植網(wǎng)站設(shè)計(jì)、桑植網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、桑植企業(yè)網(wǎng)站模板建站服務(wù),十余年桑植做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
#define?N?8
void?selection_sort(int?a[],?int?n)?{
int?i,?t,?imax?=?0;
if(n??1)?return;
for(i?=?1;?i??n;?++i)?{
if(a[imax]??a[i])
imax?=?i;
}
if(imax?!=?n?-?1)?{
t?=?a[n?-?1];
a[n?-?1]?=?a[imax];
a[imax]?=?t;
}
selection_sort(a,?n?-?1);
}?
int?main(void)?{
int?i,?a[N]?=?{8,5,4,6,1,2,3,7};
printf("排序前:\n");
for(i?=?0;?i??N;?i++)
printf("%d?",?a[i]);
printf("\n");
selection_sort(a,?N);
printf("排序后:\n");
for(i?=?0;?i??N;?i++)
printf("%d?",?a[i]);
printf("\n");
return?0;
}
1、首先打開(kāi)編輯軟件,新建一個(gè)c程序空文件,引入標(biāo)準(zhǔn)庫(kù)和主函數(shù),定義一個(gè)QuickSort函數(shù)用來(lái)排序,下面首先編寫(xiě)排序函數(shù)的:
2、此處用到快速排序思想,通過(guò)一趟排序?qū)⒁判虻臄?shù)據(jù)分割成獨(dú)立的兩部分,即這里用i和j兩個(gè)變量分割數(shù)據(jù),然后一部分的所有數(shù)據(jù)都比另外一部分的所有數(shù)據(jù)都要小,接著對(duì)這兩部分?jǐn)?shù)據(jù)分別進(jìn)行比較排序,整個(gè)排序過(guò)程可以遞歸進(jìn)行,以此達(dá)到整個(gè)數(shù)據(jù)變成有序序列:
3、接著編寫(xiě)主函數(shù),主函數(shù)中定義一個(gè)數(shù)組,然后用scanf接受數(shù)組,用戶(hù)輸入10個(gè)數(shù)以后,會(huì)將數(shù)存在數(shù)組array中,然后調(diào)用上面處理排序的函數(shù),函數(shù)的輸入就是剛才輸入的數(shù),最后在把排序的結(jié)果輸出即可:
4、最后編譯運(yùn)行,輸入10個(gè)數(shù),最后控制臺(tái)輸出了排序的結(jié)果,證明程序的邏輯是沒(méi)有問(wèn)題的。以上就是C語(yǔ)言輸入10個(gè)數(shù)排序的演示:
設(shè)3個(gè)數(shù)分別等于a,b,c
1、先比較a,b大小,如果a大,則進(jìn)行下一步繼續(xù)比較,如果b大,則a,b的數(shù)值互換
2、同上這次是b,c比較大小
3、最后顯示a,b,c
#include
"stdio.h"
main()
{
int
a,b,c,n,m,p;
scanf("%d%d%d",a,b,c);
if(ba)n=a,a=b,b=n;
if(ca)m=a,a=c,c=m;
if(cb)p=c,c=b,b=p;
printf("%d%d%d",a,b,c);
}
//InsertionSort
void insertionSort(int a[], int size) {
int i, j, key;
for (i = 0; i size; i++) {
key = a[i];
j = i-1;
while (j = 0 key a[j]) { //把元素插入到之前的有序元組中
a[j+1] = a[j];
j--;
}
a[j+1] = key;
}
}
//MergeSort
void merge(int a[], int p, int q, int r) { //合并兩個(gè)子元組
int i, j, k, n1, n2;
int *array1, *array2;
n1 = q - p + 1,
n2 = r - q;
array1 = (int *)calloc(n1+1, sizeof(int));
array2 = (int *)calloc(n2+1, sizeof(int));
if (array1 == NULL || array2 == NULL) {
printf("Error: calloc failed in concat\n");
exit(EXIT_FAILURE);
}
for(i = 0; i n1; i++)
array1[i] = a[p + i];
for(i = 0; i n2; i++)
array2[i] = a[q + 1 + i];
array1[n1] = MAXNUMBER;
array2[n2] = MAXNUMBER;
i = 0, j = 0;
for(k = p; k = r; k++)
if(array1[i] = array2[j])
a[k] = array1[i++];
else
a[k] = array2[j++];
free(array1);
free(array2);
}
void mergeSort(int a[], int p, int r) {//歸并的遞歸調(diào)用
int q;
if (p r) {
q = (p+r)/2;
mergeSort(a,p,q);
mergeSort(a,q+1,r);
merge(a,p,q,r);
}
}
//QuickSort
int partition(int a[], int p, int r) {//快排的分組函數(shù)
int i, j, x, temp;
x = a[r];
i = p - 1;
for (j = p; j r; j++)
if (x a[j]) {
temp = a[++i];
a[i] = a[j];
a[j] = temp;
}
temp = a[++i];
a[i] = a[r];
a[r] = temp;
return i;
}
void quickSort(int a[], int p, int r) { //快排
int q;
if (p r) {
q = partition(a, p, r);
quickSort(a, p, q-1);
quickSort(a, q+1, r);
}
}
//隨即版的quickSort
int randomPartition(int a[], int p, int r){
int i, temp;
i = rand();
while( i p || i r)
i = rand();
temp = a[i];
a[i] = a[r];
a[r] = temp;
return partition(a,p,r);
}
void randomQuickSort(int a[], int p, int r){
int q;
if(p r){
q = randomPartition(a,p,r);
randomQuickSort(a,p,q-1);
randomQuickSort(a,q+1,r);
}
}
//BubbleSort();//冒泡排序
void bubbleSort(int a[], int size) {
int i, j, temp;
for (i = size -1; i = 0; i--)
for (j = 0; j i; j++)
if (a[j] a[j+1]) {
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
比如要執(zhí)行printdigits(1234),則執(zhí)行
printdigits(1234/10);
printf("%d\n",1234%10);
要先執(zhí)行printdigits(1234/10),即printdigits(123),變成執(zhí)行
printdigits(123/10);
printf("%d\n",123%10);
printf("%d\n",1234%10);
要先執(zhí)行printdigits(123/10),即printdigits(12),變成執(zhí)行
printdigits(12/10);
printf("%d\n",12%10);
printf("%d\n",123%10);
printf("%d\n",1234%10);
要先執(zhí)行printdigits(12/10),即printdigits(1),變成執(zhí)行
printf("%d\n",1);
printf("%d\n",12%10);
printf("%d\n",123%10);
printf("%d\n",1234%10);
以上依次執(zhí)行打印:1 2 3 4
#include stdio.h
int a[20];
void f(int n)
{
int i,t;
if(n10)
{
f(n+1);
t=a[n];
for(i=n+1;i=10;i++)
if(ta[i])
a[i-1]=a[i];
else
break;
a[i-1]=t;
}
}
int main()
{
int i;
for(i=1;i=10;i++)
scanf("%d",a[i]);
f(1);
for(i=1;i=10;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
當(dāng)前題目:c語(yǔ)言用遞歸函數(shù)對(duì)數(shù)排序 c語(yǔ)言遞歸排序算法
當(dāng)前鏈接:http://chinadenli.net/article34/hijjse.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、微信公眾號(hào)、響應(yīng)式網(wǎng)站、用戶(hù)體驗(yàn)、網(wǎng)站收錄、App開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)