『壹』 c語言 一組數據的排序問題
//使用qsort排序函數
//qsort(void*base,size_tnitems,size_tsize,int(*compar)(constvoid*,constvoid*))
#include<stdlib.h>
#include<stdio.h>
//定義結構
typedefstructtag_Persion{
charname;
intage,group,devide,position;
}
Persion;
//比較演算法組別>細分>職位>年齡
intcomp(constvoid*_a,constvoid*_b){
intre;
Persiona=*(Persion*)_a;
Persionb=*(Persion*)_b;
//組別
if((re=a.group-b.group))returnre*40000;
//細分
if((re=a.devide-b.devide))returnre*3000;
//職位
if((re=a.position-b.position))returnre*200;
//年齡
if((re=a.age-b.age))returnre;
return0;
}
//顯示數據
voidshow(Persion*s,intl){
printf(" 名稱 年齡 組別 細化 職業 ");
for(inti=0;i<l;i++){
printf(" A%c%8d%8d%8d%8d ",
s[i].name,s[i].age,s[i].group,
s[i].devide,s[i].position);
}
}
//主函數
voidmain(){
//數據
int_data[]={
'0',33,6,1,2,
'1',42,6,1,6,
'2',40,6,1,5,
'3',52,6,2,6,
'4',36,6,2,2,
'5',51,6,2,4,
'6',23,5,1,3,
'7',48,5,1,2,
'8',30,5,1,1};
intlen=sizeof(_data)/sizeof(Persion);
Persion*data=(Persion*)_data;
//快速排序(C語言函數)
qsort(data,len,sizeof(Persion),comp);
//顯示
show(data,len);
}
名稱 年齡 組別 細化 職業
A8 30 5 1 1
A7 48 5 1 2
A6 23 5 1 3
A0 33 6 1 2
A2 40 6 1 5
A1 42 6 1 6
A4 36 6 2 2
A5 51 6 2 4
A3 52 6 2 6
『貳』 C語言:用選擇排序法對一個數組里的數進行排序,從小到大,要求選出小的進行排序
#include<stdio.h>
intmain()
{
inti=0;
inta[10]={0,5,2,3,6,9,8,7,4,1};
intj=0;
inttmp=0;
intm=sizeof(a)/sizeof(a[0]);//s數組大小
for(i=0;i<m-1;i++)//比較m-1次
{
for(j=0;j<m-i-1;j++)//最後一次比較a[m-i-1]與a[m-i-2]
{
if(a[j]>a[j+1])//如果a[j]比a[j+1]大則交換內容
{
tmp=a[j+1];
a[j+1]=a[j];
a[j]=tmp;
}
}
}
for(i=0;i<m;i++)
{
printf("%d",a[i]);//列印
}
printf(" ");
return0;
}
(2)c語言怎麼將一組數據順序排列擴展閱讀
C語言排序法
把一個數組進行排序可以使用選擇排序法。選擇排序法的原理在是每一趟循環尋找數組中最小的數的下標,然後按照遞增的順序放入數組中。
循環找出最小數的下標,該下標用min保存,直到比較完整個數組,即可找到最小的數,然後將該數放入數組的第一位,這樣就排好了一個元素。
需要再嵌套一層外層循環即可排好所有元素。第二次循環就不用再比較第一個元素了,因為第一個元素已經排好,依次類推,每一次循環就會排好一個,進行n-1次循環即可排好所有元素。
『叄』 C語言,對一組數據排序,同時使用多種排序方法
/* 冒泡排序法 */
#include "stdio.h"
#define SIZE 10
void Paixi(int a[]){
int pass,i,hold;
for(pass=0;pass<=SIZE-1;pass++) /* pass */
for(i=0;i<=SIZE-2;i++) /* one pass */
if(a[i]>a[i+1]) /* one comparison */
{
hold=a[i];
a[i]=a[i+1];
a[i+1]=hold;
}
}
void main()
{
int i, a[SIZE]={1,5,2,4,8,6,14,21,30,25};
printf("Data item in original order \n");
for(i=0;i<=SIZE-1;i++)
printf("%4d",a[i]);
Paixi(a);
printf("\n Data items in ascending order \n");
for(i=0;i<=SIZE-1;i++)
printf("%4d", a[i]);
printf("\n");
}
『肆』 C語言中如何對一組數進行排列
#include "time.h"
#include "stdio.h"
#include "stdlib.h"
int aa[100];
int bb[100];
void main()
{
void ReadDat();//隨機產生100個學生成績存放到數組aa中,隨機產生100個相應的學號存放到bb數組中
void WriteDat();//輸出排序後的成績和相應的學號。
void jsSort();
ReadDat();
printf("*********************************\n");
printf("初始成績單為:\n");
WriteDat();
jsSort();
printf("*********************************\n");
printf("排序後成績單為:\n");
WriteDat();
return ;
}
void ReadDat()
{
srand(time(NULL));//隨機數種子
for(int i=0;i<100;i++)
{
aa[i]=1+(int)(100.0*rand()/(RAND_MAX+1.0));//產生隨機數
}
for(i=0;i<100;i++)
{
bb[i]=1+(int)(100.0*rand()/(RAND_MAX+1.0));//產生隨機數
}
}
void WriteDat()
{
int i;
printf("序號\t成績: \t學號: \n");
for(i=0;i<100;i++)
printf("%d\t成績:%3d\t學號:%d\n",i+1,aa[i],bb[i]);
}
void jsSort()
{
int i,j,t;
for(i=0;i<99;i++)
for(j=0;j<99-i;j++)
{
if(aa[j]<aa[j+1])
{
t=aa[j];///////////冒泡排序,同時調整對應的學號數組bb
aa[j]=aa[j+1];
aa[j+1]=t;
t=bb[j];
bb[j]=bb[j+1];
bb[j+1]=t;
}
}
}
『伍』 C語言如何輸入十個數,按從大到小順序排列!
用選擇排序法編寫c語言,實現從鍵盤上輸入10個數,按從大到小的順序排序輸出。代碼如下:
#include<stdio.h>
int main()
{
int i,j,a[10],t;
printf("輸入數");
for (i = 0; i < 10; i++)
scanf("%d",&a[i]);
for (i = 0; i < 10; i++)
{
for (j = i + 1; j < 10;j++)
if (a[i] < a[j]){
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
printf("從大到小");
for (i = 0; i < 10; i++)
printf("%2d", a[i]);
return 0;
}
(5)c語言怎麼將一組數據順序排列擴展閱讀:
代碼還可以設計,如下:
#include<stdio.h>
int main()
{
int a[10],i,j,t;//定義數組;
for(i=0;i<10;i++){
scanf("%d",&a[i]);//給數組賦值;
}
for(i=0;i<9;i++)//10個數,進行9輪比較;
for(j=0;j<10-i;j++){//第一個數比較9次,依次遞減;
if(a[j]>a[j+1]) {//交換值;
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
for(i=0;i<10;i++){
printf("%d ",a[i]);//輸出數組的值;
}
return 0;
}
}
printf("the sorted numbers: ");
for(i=0;i<10;i++)
printf(" %d",a[i]);
printf(" ");
}
『陸』 如何用C語言設計程序排列6個數字的大小順序
排序數組可以使用冒泡演算法:如果前一個數據比後一個大,則交換。
{
int i,j,t,a[6];
printf("Please input 6 integers: ");
for(i=0;i<6;i++)
scanf("%d",&a[i]);
for(i=0;i<5;i++) /* 冒泡法排序 */
for(j=0;j<6-i-1;j++)
if(a[j]>a[j+1])
{t=a[j];/* 交換a[i]和a[j] */
a[j]=a[j+1];
a[j+1]=t;
}
優點:
簡潔緊湊、靈活方便:C語言一共只有32個關鍵字,9種控制語句,程序書寫形式自由,區分大小寫。把高級語言的基本結構和語句與低級語言的實用性結合起來。C 語言可以像匯編語言一樣對位、位元組和地址進行操作,而這三者是計算機最基本的工作單元。
以上內容參考:網路-c語言程序設計
『柒』 C語言鏈表中如何實現對一組數據進行排序
這個是我曾經編寫的一個管理裡面的一個模塊
就是按鏈表的某個變數進行排序的
希望您能看明白
Ranking_inquires(struct
student
*head)
{
int
B=A,i=0;
struct
student
*temp=head;
struct
student
*p=head;
struct
student
*q=head;
printf("\t\t
按總分
名次查詢
\n
");
printf("姓名
總分
名次\n");
while(p->next!=NULL&&A>1)//根據成員的成績對結構體
進行排序
{
p->sum=p->math+p->English+p->chinese+p->computer;
q=p->next;
p=p->next;
while(q->next!=NULL)
{
q=q->next;
if(p->sum
sum)
{
h.stu_id1=p->stu_id;
strcpy(h.name1,p->name);
h.English1=p->English;
h.computer1=p->computer;
h.math1=p->math;
h.sum1=p->sum;
h.chinese1=p->chinese;
p->stu_id=q->stu_id;
strcpy(p->name,q->name);
p->English=q->English;
p->computer=q->computer;
p->math=q->math;
p->sum=q->sum;
p->chinese=q->chinese;
q->stu_id=h.stu_id1;
strcpy(q->name,h.name1);
q->English=h.English1;
q->computer=h.computer1;
q->math=h.math1;
q->sum=h.sum1;
q->chinese=h.chinese1;
}
}
A--;
++i;
p->ranking=i;
}
這個是定義的全局變數
int
A=0;
int
cc;
struct
student
{
int
stu_id;
char
name[20];
float
English;
float
computer;
float
chinese;
float
math;
float
sum;
int
ranking;
struct
student
*next;
};
struct
stu
{
int
stu_id1;
char
name1[20];
float
English1;
float
computer1;
float
chinese1;
float
math1;
float
sum1;
}h;
『捌』 C語言,輸入一組數進行排序,由大到小排列,用自定義函數實現
給你一個直接插入排序
#include "stdio.h"
void InsertSort(int a[], int left, int right) {//對數組a從下標為left到right區域進行直接插入排序
int i, j, tmp;
for(i = left + 1; i <= right; i++) {
for(j = i - 1, tmp = a[i]; j >= left && tmp > a[j]; j++)
a[j + 1] = a[j];
a[j + 1] = tmp;
}
}
void main( ) {
int i, n, a[100];
scanf("%d", &n);
for(i = 0; i < n; i++)
scanf("%d", &a[i]);
InsertSort(a, 0, n - 1);
printf("\n");
for(i = 0; i < n; i++) printf("%d\t", a[i]);
}
『玖』 編寫C語言程序,把一個數組按從小到大的次序排列起來
源程序以及演算法注釋如下:
#define _CRT_SECURE_NO_WARNINGS//VS編譯環境需要進行宏定義,VC6.0可忽略
#include<stdio.h>//輸入輸出頭文件
int main()
{
int number[10], New_number[10];//定義數組的數據類型為整型
int i, j, m, n, k;//定義變數的數據類型為整型
printf("input 10 <int> number:");//文字提示
for (i = 0; i <= 9; i++)//用循環輸入數值給數組number並賦給數組New_number
{
scanf("%d", &number[i]);//輸入10個整形數字到數組中
New_number[i] = number[i];//數組number元素賦給數組New_number
}
for (n = 0; n <= 8; n++)//要進行(10-1)組比較
for (j = 0; j <= 8 - n; j++)//每組進行(10減第幾組)次比較
{
if (number[j] > number[j + 1])//比較大小並將小的賦給前面的數組
{
k = number[j];//將相對較大的元素賦值給中間元素
number[j] = number[j + 1];//將相對較小的元素送達前面一個位置
number[j + 1] = k;//將中間變數元素送給後面一個位置
}
if (New_number[j] < New_number[j + 1])//比較大小並將大的賦給前面的數組
{
k = New_number[j + 1];//將相對較小的元素賦值給中間元素
New_number[j + 1] = New_number[j];//將相對較大的元素送達前面一個位置
New_number[j] = k;//將中間變數元素送給後面一個位置
}
}
printf("min-->max:
");//文字提示
for (m = 0; m <= 9; m++)//依次從小到大輸出
printf("%d ", number[m]);//輸出元素
printf("
");
printf("max-->min:
");//文字提示
for (m = 0; m <= 9; m++)//依次從大到小輸出
printf("%d ", New_number[m]);//輸出元素
printf("
");
return 0;
}
程序運行結果如下:
(9)c語言怎麼將一組數據順序排列擴展閱讀:
其他簡單實現程序:
#include<stdio.h>
int main()
{
int a[10]={0};
int i,j,temp;
for(i = 0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(i = 0;i<10;i++)
{
for(j = 0;j<10-i-1;j++)
{
if(a[j]>a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
for(i = 0;i<10;i++)
printf("%d ",a[i]);
return 0;
}
『拾』 c語言編程: 將一組數按從大到小的順序排序
#include <stdio.h>
main()
{
int x;
printf("請輸入要排序數字個數:");
scanf("%d",&x);
int i,j,k,a,b,num[x];
printf("輸入數據:");
for(i=0;i<x;i++)
scanf("%d",&num[i]);
for(j=0;j<x;j++)
{
for(k=j+1;k<x;k++)
if(num[k]>num[j])
{
a=num[j];
num[j]=num[k];
num[k]=a;
}
}
for(b=0;b<x;b++)
printf("%d ",num[b]);
return 0;
}
(10)c語言怎麼將一組數據順序排列擴展閱讀:
include用法:
#include命令預處理命令的一種,預處理命令可以將別的源代碼內容插入到所指定的位置;可以標識出只有在特定條件下才會被編譯的某一段程序代碼;可以定義類似標識符功能的宏,在編譯時,預處理器會用別的文本取代該宏。
插入頭文件的內容
#include命令告訴預處理器將指定頭文件的內容插入到預處理器命令的相應位置。有兩種方式可以指定插入頭文件:
1、#include<文件名>
2、#include"文件名"
如果需要包含標准庫頭文件或者實現版本所提供的頭文件,應該使用第一種格式。如下例所示:
#include<math.h>//一些數學函數的原型,以及相關的類型和宏
如果需要包含針對程序所開發的源文件,則應該使用第二種格式。
採用#include命令所插入的文件,通常文件擴展名是.h,文件包括函數原型、宏定義和類型定義。只要使用#include命令,這些定義就可被任何源文件使用。