#include?stdio.h
成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供桑植網(wǎng)站建設(shè)、桑植做網(wǎng)站、桑植網(wǎng)站設(shè)計、桑植網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、桑植企業(yè)網(wǎng)站模板建站服務(wù),十余年桑植做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(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、首先打開編輯軟件,新建一個c程序空文件,引入標(biāo)準(zhǔn)庫和主函數(shù),定義一個QuickSort函數(shù)用來排序,下面首先編寫排序函數(shù)的:
2、此處用到快速排序思想,通過一趟排序?qū)⒁判虻臄?shù)據(jù)分割成獨立的兩部分,即這里用i和j兩個變量分割數(shù)據(jù),然后一部分的所有數(shù)據(jù)都比另外一部分的所有數(shù)據(jù)都要小,接著對這兩部分?jǐn)?shù)據(jù)分別進(jìn)行比較排序,整個排序過程可以遞歸進(jìn)行,以此達(dá)到整個數(shù)據(jù)變成有序序列:
3、接著編寫主函數(shù),主函數(shù)中定義一個數(shù)組,然后用scanf接受數(shù)組,用戶輸入10個數(shù)以后,會將數(shù)存在數(shù)組array中,然后調(diào)用上面處理排序的函數(shù),函數(shù)的輸入就是剛才輸入的數(shù),最后在把排序的結(jié)果輸出即可:
4、最后編譯運行,輸入10個數(shù),最后控制臺輸出了排序的結(jié)果,證明程序的邏輯是沒有問題的。以上就是C語言輸入10個數(shù)排序的演示:
設(shè)3個數(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) { //合并兩個子元組
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í)行打?。? 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;
}