當前位置:首頁 » 編程語言 » c語言排序程序

c語言排序程序

發布時間: 2022-08-22 08:14:49

⑴ 用c語言編程:用選擇法對10個整數排序,10個整數用scanf函數輸入

1、打開visual C++ 6.0,准備一個空白的c語言文件,引入頭文件,在main函數中定義變數和數組:

⑵ c語言 選擇法排序

void sa(int array[],int n)
{
int i,j,k,temp;
for(i=0;i<10;i++)
{
k=i; //保存i的值,用k來進行循環排序
for(j=i+1;j<n;j++) //將第i個元素後面的元素與第i個元素進行比較
if(array[j]<array[k]) //如果第k=i個元素後面的元素小於i號元素,交換兩個元素的標號, 這樣就將最小元素的標號放到最前面
k=j; //交換標號
temp=array[k]; //循環結束後,交換兩個標號下的元素的值
array[k]=array[i];
array[i]=temp;
}
}
這個程序實現的是由小到大的排序。第二個循環裡面,就是i號元素後面最小的元素對應的標號放到k中,在交換當前元素與k號元素中的值,實現由大到小排序

⑶ 如何用C語言給字母排序

這個其實就是排序,因為char類型跟int類型一樣的也是數字,可以比較大小的,然後輸出就可以了。

⑷ 用C語言編寫,輸入10個數按降序排列

#include "stdafx.h"
#include "stdio.h"

int main(int argc, char* argv[])
{
int a[10];
int i,j,d;
printf("請輸入十個整數,用空格隔開:");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<9;i++)
{
for(j=i+1;j<10;j++)
{
if(a[i]<a[j])
{
d=a[i];
a[i]=a[j];
a[j]=d;
}
}
}
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
return 0;
}
用選擇法。

⑸ C語言編寫關於排列的程序

#include
<stdio.h>
#include
<time.h>
#include
<stdlib.h>
void
Swap(int*
a,
int*
b)
//
交換
{
int
t;
t
=
*a;
*a
=
*b;
*b
=
t;
}
void
AsceSort(int*
begin,
int*
end)
//
升序排序
{
for(int*
p
=
begin;
p
!=
end;)
if(p
==
begin
||
*(p-1)
<=
*p)
++p;
else
Swap(p---1,
p);
}
void
DescSort(int*
begin,
int*
end)
//
降序排序
{
for(int*
p
=
begin;
p
!=
end;)
if(p
==
begin
||
*(p-1)
>=
*p)
++p;
else
Swap(p---1,
p);
}
void
Print(int*
a,
int
n)
//
10個一行輸出
{
int
i;
for(i
=
0;
i
<
n;
++i)
{
if(i
!=
0
&&
i
%
10
==
0)
putchar('\n');
printf("%4d
",
a[i]);
}
putchar('\n');
}
#define
N
1000
int
main()
{
int
a[N],
i;
srand(time(0));
for(i
=
0;
i
<
N;
++i)
a[i]
=
rand()
%
1001
+
1;
puts("整理前排列:");
Print(a,
N);
puts("遞增排列:");
AsceSort(a,
a
+
N);
Print(a,
N);
puts("遞減排列:");
DescSort(a,
a
+
N);
Print(a,
N);
return
0;
}

⑹ c語言排序的方法

排序主要分為以下幾種。
1.冒泡排序:通過循環比較前後數的大小進行交換。最後使得數組有序。
2.快速排序:首先將第一個數作為一個基準,然後循環,將前半部分大於該數的與後半部分小於該數的進行交換,使得以該數為分界線,前面的小於該數,後面的大於該數,然後分前後兩部分繼續。

⑺ c語言三種排序

常用的c語言排序演算法主要有三種即冒泡法排序、選擇法排序、插入法排序

一、冒泡排序冒泡排序:

是從第一個數開始,依次往後比較,在滿足判斷條件下進行交換。代碼實現(以降序排序為例)

#include<stdio.h>

int main()

{

int array[10] = { 6,9,7,8,5,3,4,0,1,2 };

int temp;

for (int i = 0; i < 10; i++)

{//循環次數

for (int j = 0; j <10 - i-1; j++)

{

if (array[j] < array[j+1])

{//前面一個數比後面的數大時發生交換 temp = array[j];

array[j] = array[j+1];

array[j + 1] = temp;

}

}

} //列印數組 for (int i = 0; i < 10; i++) printf("%2d", array[i]); return 0;}}

二、選擇排序以升序排序為例:

就是在指定下標的數組元素往後(指定下標的元素往往是從第一個元素開始,然後依次往後),找出除指定下標元素外的值與指定元素進行對比,滿足條件就進行交換。與冒泡排序的區別可以理解為冒泡排序是相鄰的兩個值對比,而選擇排序是遍歷數組,找出數組元素與指定的數組元素進行對比。(以升序為例)

#include<stdio.h>

int main()

{

int array[10] = { 6,9,7,8,5,3,4,0,1,2 };

int temp, index;

for (int i = 0; i < 9; i++) {

index = i;

for (int j = i; j < 10; j++)

{

if (array[j] < array[index])

index = j;

}

if(i != index)

{

temp = array[i];

array[i] = array[index];

array[index] = temp;

}

for(int i=0;i<10:i++)

printf("%2d"array[i])

return 0;

}

三、快速排序

是通過一趟排序將要排序的數據分割成獨立的兩部分,其中一部分的所有數據都比另外一部分的所有數據都要小,然後再按此方法對這兩部分數據分別進行快速排序,整個排序過程可以遞歸進行,以此達到整個數據變成有序序列。

void QuickSort(int* arr, int size)

{

int temp, i, j;

for(i = 1; i <size; i++)

for(j=i; j>0; j--)

{

if(arr[j] <arr[j-1])

{

temp = arr[j];

arr[j]=arr[j-1];

arr[j-1]=temp;

}

}

}

⑻ C語言:編寫一個程序用冒泡排序實現升序排列

1、首先打開一個空白的C語言文件,首先先定義一組待排序的數列以及各個變數,接著就是用來處理排序的邏輯:

⑼ 如何用C語言編寫一個排序程序

樓上的用的是C++
若單純的用C那就是這樣
#include<stdio.h>
#define
print
"NO.%d
%d
%d
%d
%d
%3.2f
%3.2f\n",1+i,stu[i].num,stu[i].mat,stu[i].ENG,stu[i].com,stu[i].aver,stu[i].total//宏定義節約時間
struct
student
{
int
num;
int
mat;
int
ENG;
int
com;
float
aver;
float
total;
}stu[10];//定義結構體變數
void
main()
{
int
i;
void
take_turn_print(struct
student
stu1[10])
;
float
sum(int
x,int
y,int
z);//聲明求和函數
for(i=0;i<10;i++)
scanf("%d%d%d%d",&stu[i].num,&stu[i].mat,&stu[i].ENG,&stu[i].com);
for(i=0;i<10;i++)
{
stu[i].total=sum(stu[i].mat,stu[i].ENG,stu[i].com);//調用求和函數
stu[i].aver=stu[i].total/3;
}
take_turn_print(stu);//調用排序
列印函數
}
void
take_turn_print(struct
student
stu1[10])
{
void
change(int
*x,int
*y);//聲明換位函數
void
change1(float
*x,float
*y);//聲明換位函數
int
i,j;
for(j=0;j<9;j++)//冒泡排序
為理解簡單
就沒用別的排序方法
哈哈
{
for(i=0;i<9-j;i++)
{
if(stu1[i].aver<stu1[i+1].aver)
{
change(&stu1[i].num,&stu1[i+1].num);//
值交換
change(&stu1[i].mat,&stu1[i+1].mat);//
值交換
change(&stu1[i].ENG,&stu1[i+1].ENG);//
值交換
change(&stu1[i].com,&stu1[i+1].com);//
值交換
change1(&stu1[i].aver,&stu1[i+1].aver);//
值交換
change1(&stu1[i].total,&stu1[i+1].total);//
值交換
}
}
}
for(i=0;i<10;i++)
printf(print);//列印
}
void
change(int
*x,int
*y)
{
int
i;
i=*x;
*x=*y;
*y=i;//利用指針做變數替換
}
void
change1(float
*x,float
*y)
{
float
i;
i=*x;
*x=*y;
*y=i;//利用指針做變數替換
}
float
sum(int
x,int
y,int
z)
{
float
i;
i=(float)(x+y+z);
return(i);
}
前幾天也是幫同學做這樣的題
一模一樣
看來你也是WH大學的

⑽ c語言排序程序

#include <stdio.h>
void main()
{
int a[10];
int i,j,t;
for(i=0;i<=9;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
for(j=i+1;j<10;j++)
{
if(a[i]>a[j])
{ /*交換從這里開始*/
t=a[i];
a[i]=a[j];
a[j]=t;}
} /*交換到這里結束*/
for(i=0;i<=9;i++)
printf("%d ",a[i]);
printf("\n");/*下一次循環時換行*/
}
也沒有多大的錯誤
小心點,C是分語句執行的,到了「;」就是一條語句,除非你用「{}」,這樣可以將幾個語句合並為一條語句。可以簡單這么理解。

熱點內容
游戲腳本編程書籍推薦 發布:2024-05-05 02:59:13 瀏覽:71
編譯器書籍推薦 發布:2024-05-05 02:57:02 瀏覽:55
電池存儲溫度 發布:2024-05-05 02:53:07 瀏覽:206
安卓在美國怎麼下載 發布:2024-05-05 02:31:06 瀏覽:924
黑莓存儲空間 發布:2024-05-05 02:19:50 瀏覽:274
我的世界礦石島伺服器宣傳片 發布:2024-05-05 02:17:19 瀏覽:613
如何區分安卓原裝充電器 發布:2024-05-05 01:41:23 瀏覽:72
怎麼從蘋果轉移到安卓 發布:2024-05-05 01:41:20 瀏覽:721
支付寶付款碼怎麼設置密碼 發布:2024-05-05 01:27:36 瀏覽:878
qtp錄制的腳本 發布:2024-05-05 01:14:04 瀏覽:367