當前位置:首頁 » 編程語言 » 選擇排序c語言降序
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

選擇排序c語言降序

發布時間: 2022-02-22 05:02:56

㈠ 用c語言怎麼樣按總成績降序排序後顯示學生的數據

冒泡和選擇排序兩種比較簡單
舉個例子 冒泡
數據在數組score[N]中
for (i=0;i<N;i++}
{
for (j=0;j<N-1;j++)
{
if (score[j]<score[j+1])
{
int temp;
temp=score[j];
score[j]=score[j+1];
score[j+1]=temp;
}
}
}
這樣數據就從大到小排好了 然後使用循環輸出學生數據就可以了

㈡ 關於C語言進行降序排列

#include "stdio.h"
#define MAX 10
void sort(int *p,int n)
{int i,j;
int temp; //記錄每一輪比較中最大值
int maxindex; //記錄每一輪比較中最大值的下標

for (i=0;i<n;i++)
{
temp=p[i];
maxindex=i;
for (j=i+1;j<n;j++)
if (temp<p[j]) {temp=p[j];maxindex=j;}
if(maxindex!=i){p[maxindex]=p[i];p[i]=temp;}
}
}

/*
void sort(int *p)
{int i,j,k;
for (i=0;i<9;i++)
for (j=i+1;j<10;j++)
if (p[i]<p[j]) {k=p[i];p[i]=p[j];p[j]=k;}
這個是簡單選擇排序,但是執行效率沒有上面的高。不過對於比較小的基數,還是看不出來效率的優劣,如果在基數上百萬時,效率高的執行時間將節省不少。
*/

main()
{
int a[MAX],i;
for (i=0;i<MAX;i++)
scanf("%d",&a[i]);
sort(a,MAX);
for(i=0;i<MAX;i++)
printf("%d ,",a[i]);
}

㈢ C語言編程,選擇排序,輸入n個整數,對其進行降序排序,n由鍵盤輸入

#include<stdio.h>
#include<stdlib.h>
voidmain()
{
int*a,i,j,n;
scanf("%d",&n);
a=(int*)malloc(sizeof(int));
for(i=0;i<n;i++)
{
intt;
scanf("%d",&t);
for(j=i-1;j>=0;j++)
if(t<a[j])break;
elsea[j+1]=a[j];
a[j+1]=t;
}
for(i=0;i<n;i++)
printf("%d",a[i]);
}

㈣ C語言選擇法排序

#include<stdio.h>

#defineM 5

void main()

{

int b[M],i,j,t,k;

for(i=0;i<M;i++)

scanf("%d",&b[i]);

for(i=0;i<M-1;i++)

{

for(k=i,j=i+1;j<M;j++)

if(b[k]<b[j])

k=j;

if(i!=k)

{

t=b[i];

b[i]=b[k];

b[k]=t;

}

}

for(i=0;i<M;i++)

printf("%d ",b[i]);

}

錯在大括弧位置加錯了。

代碼:

#include<stdio.h>

void SelectionSort(int *num,int n)

{

int i = 0;

int min = 0;

int j = 0;

int tmp = 0;

for(i = 0;i < n-1;i++)

{

min = i;//每次講min置成無序組起始位置元素下標

for(j = i;j < n;j++)//遍歷無序組,找到最小元素。

{

if(num[min]>num[j])

{

min = j;

}

}

if(min != i)//如果最小元素不是無序組起始位置元素,則與起始元素交換位置

{

tmp = num[min];

num[min] = num[i];

num[i] = tmp;

}

}

}

(此處空一行)

int main()

{

int num[6] = {5,4,3,2,9,1};

int i = 0;

SelectionSort(num,6);//這里需要將數列元素個數傳入。有心者可用sizeof在函數內求得元素個數。

for(i = 0;i < 6;i++)

{

printf("%d ",num[i]);

}

return 0;

}

㈤ c語言中按單科降序(選擇)排序

void Sort_sub(Student *s,int n) //按單科降序(選擇)排序
{int i,j;
char t[10];
s=head;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
if(strcmp(s->num,s->next->num)>0)
{
strcpy(t,s->next->cgrade);
strcpy(s->next->cgrade,s->cgrade);
strcpy(s->cgrade,t);

strcpy(t,s->next->mgrade);
strcpy(s->next->mgrade,s->mgrade);
strcpy(s->mgrade,t);

strcpy(t,s->next->egrade);
strcpy(s->next->egrade,s->egrade);
strcpy(s->egrade,t);

strcpy(t,s->next->name);
strcpy(s->next->name,s->name);
strcpy(s->name,t);
}
s=s->next;
}
s=head;
}
}

㈥ 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;

}

(6)選擇排序c語言降序擴展閱讀

C語言排序法

把一個數組進行排序可以使用選擇排序法。選擇排序法的原理在是每一趟循環尋找數組中最小的數的下標,然後按照遞增的順序放入數組中。

循環找出最小數的下標,該下標用min保存,直到比較完整個數組,即可找到最小的數,然後將該數放入數組的第一位,這樣就排好了一個元素。

需要再嵌套一層外層循環即可排好所有元素。第二次循環就不用再比較第一個元素了,因為第一個元素已經排好,依次類推,每一次循環就會排好一個,進行n-1次循環即可排好所有元素。

㈦ C語言,選擇法進行降序排序。我寫的選擇排序程序如下,但運行之後還是原來數組的順序 請大神指教

有兩處錯誤:

1:s[i]-->s[max]

2:第二段代碼,應該是在第二重循環執行完之後。

不理解可以追問

㈧ 求幾個C語言的程序 順序查找,排序(升序和降序),冒泡排序,選擇排序,直接插入排序和二分插入排序。

首先聲明下面的程序不全是我寫的,還有就是你說的二分插入排序 不知道是什麼,我想應該是二分法查找已經排序的數組吧!!!
希望你能滿意。

1.順序查找

#include<stdio.h>
void main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int i,x,y;
printf("輸入你要查找的數:\n");
scanf("%d",&x);
y=0; //標記是否已找到,y=1表是找到了,y=0表示沒找到
for(i=0;i<10;i++) //循環,把x和數組中的元素一個個比較
{
if(x==a[i]) //如果x=a[i]說明已經找到
{
y=1; //把y變成1,說明已經找到了
printf("你要查找的數%d在第個%d位置\n",x,i+1); //輸出找到的相關信息
break; //跳出循環
}
}
if(y==0)printf("無法找到你要查找的數\n"); //y=0表示找不到
}

2.排序(升序和降序)

#include<stdio.h>
void main()
{
int a[5]={};
int i,j;
int temp=0;
for(i=0;i<5;i++)
{
printf("請輸入第%d個整數\n",i+1);
scanf("%d",&a[i]);
}
for(i=1;i<5;i++)
{
for(j=0;j<5-i;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
for(i=0;i<5;i++)
{
printf("排序後的整數:%d\t",a[i]);
}
}
現在是升序的。。如果想改成降序 只要交換一下大小的順序就好了

3.冒泡排序
#include<stdio.h>
main()
{
int i,j,temp;
int a[10];
for(i=0;i<10;i++)
scanf ("%d,",&a[i]);
for(j=0;j<=9;j++)
{ for (i=0;i<10-j;i++)
if (a[i]>a[i+1])
{ temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;}
}
for(i=1;i<11;i++)
printf("%5d,",a[i] );
printf("\n");
}

4.選擇排序
#include<stdio.h>
void selectSort(int a[],int n)
{int t,i,j,k;
for(i=0;i<n-1;i++)
{k=i;
for(j=i+1;j<n;j++)
if(a[j]<a[k])
k=j;
t=a[i];
a[i]=a[k];
a[k]=t;
}
}

main()
{int a[100],n,i;
scanf("%d",&n);
puts("Arrange:");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
selectSort(a,n);
puts("Sorted Arrange:");
for(i=0;i<n;i++)
printf("%d\t",a[i]);
getch();
}

5.直接插入排序
#include "stdio.h"
#include "conio.h"
main()
{
int a[11]={1,4,6,9,13,16,19,28,40,100};
int temp1,temp2,number,end,i,j;
printf("original array is:\n");
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
printf("insert a new number:");
scanf("%d",&number);
end=a[9];
if(number>end)
a[10]=number;
else
{
for(i=0;i<10;i++)
{
if(a[i]>number)
{
temp1=a[i];
a[i]=number;
for(j=i+1;j<11;j++)
{
temp2=a[j];
a[j]=temp1;
temp1=temp2;
}
break;
}
}
}
for(i=0;i<11;i++)
printf("%6d",a[i]);
getch();
}

6.二分法查找

int binarysearch(int a[],int x,int n)
{
int left,right,middle;
left=0;
right=n-1;
while(left<=right)
{
middle=(left+right)/2;
if(x==a[middle])
return middle;
if(x>a[middle])
left=middle+1;
else right=middle-1;
}
return -1;
}

㈨ c語言的兩種排序

1、選擇排序法

要求輸入10個整數,從大到小排序輸出

輸入:2 0 3 -4 8 9 5 1 7 6

輸出:9 8 7 6 5 3 2 1 0 -4

代碼:

#include&lt;stdio.h&gt;

int main(int argc,const char*argv[]){

int num[10],i,j,k,l,temp;

//用一個數組保存輸入的數據

for(i=0;i&lt;=9;i++)

{

scanf("%d",&num&lt;i&gt;);

}

//用兩個for嵌套循環來進行數據大小比較進行排序

for(j=0;j&lt;9;j++)

{

for(k=j+1;k&lt;=9;k++)

{

if(num[j]&lt;num[k])//num[j]&lt;num[k]

{

temp=num[j];

num[j]=num[k];

num[k]=temp;

}

}

}

//用一個for循環來輸出數組中排序好的數據

for(l=0;l&lt;=9;l++)

{

printf("%d",num[l]);

}

return 0;

}

2、冒泡排序法

要求輸入10個整數,從大到小排序輸出

輸入:2 0 3-4 8 9 5 1 7 6

輸出:9 8 7 6 5 3 2 1 0-4

代碼:

#include&lt;stdio.h&gt;

int main(int argc,const char*argv[]){

//用一個數組來存數據

int num[10],i,j,k,l,temp;

//用for來把數據一個一個讀取進來

for(i=0;i&lt;=9;i++)

{

scanf("%d",&num&lt;i&gt;);

}

//用兩次層for循環來比較數據,進行冒泡

for(j=0;j&lt;9;j++)

{

for(k=0;k&lt;9-j;k++)

{

if(num[k]&lt;num[k+1])//num[k]&lt;num[k+1]

{

temp=num[k];

num[k]=num[k+1];

num[k+1]=temp;

}

}

}

//用一個for循環來輸出數組中排序好的數據

for(l=0;l&lt;=9;l++)

{

printf("%d",num[l]);

}

return 0;

}

(9)選擇排序c語言降序擴展閱讀:

return 0代表程序正常退出。return是C++預定義的語句,它提供了終止函數執行的一種方式。當return語句提供了一個值時,這個值就成為函數的返回值。

return語句用來結束循環,或返回一個函數的值。

1、return 0,說明程序正常退出,返回到主程序繼續往下執行。

2、return 1,說明程序異常退出,返回主調函數來處理,繼續往下執行。return 0或return 1對程序執行的順序沒有影響,只是大家習慣於使用return(0)退出子程序而已。

㈩ c語言 選擇法對10個整數降序排列

//選擇法排序
#include <stdio.h>
main(void)
{
int a[10],i,j,k,t;
printf("請輸入排序數列:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(j=0;j<10-1;j++)
{
k=j;
for(i=j+1;i<10;i++)
if(a[k]>a[i])
k=i;
{
t=a[j];
a[j]=a[k];
a[k]=t;
}
}
printf("從大到小排序:");
for(i=0;i<10;i++)
printf("%d ",a[i]);
getch();
}