当前位置:首页 » 编程语言 » c语言选择排序程序

c语言选择排序程序

发布时间: 2022-04-23 21:23:13

c语言 选择排序

voidSelectSort(SSTable&L)
{//对顺序表L做简单选择排序
inti,j,k,n;
SSTable元素类型t; //不能只交换key,要整个结构进行交换
for(i=0;i<L.length-1;i++) //循环范围变了
{
k=i;
for(j=i+1;j<=L.length;j++)
{
if(L.R[j].key<L.R[k].key)
k=j;//k指向此趟排序中最小的记录
if(k!=i)
{
t=L.R[i];
L.R[i]=L.R[k];
L.R[k]=t;
}
for(n=0;n<L.length;n++)
printf("%d",L.R[n].key);
printf(" ");
}
}
}

❷ 选择排序c语言代码

选择排序代码如下:

#include <stdio.h>
int main()
{
int a[100], n, i, j, position, swap;
printf("Enter number of elementsn");
scanf("%d", &n);
printf("Enter %d Numbersn", n);
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
for(i = 0; i < n - 1; i++)
{
position=i;
for(j = i + 1; j < n; j++)
{
if(a[position] > a[j])
position=j;
}
if(position != i)
{
swap=a[i];
a[i]=a[position];
a[position=swap;
}
}
printf("Sorted Array:n");
for(i = 0; i < n; i++)
printf("%dn", a[i]);
return 0;
}

❸ C语言中的选择排序法是什么

选择排序(Selection sort)是一种简单直观的排序算法。工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。

以下是一个实现选择排序的例子:

#defineSWAP(x,y,t)((t)=(x),(x)=(y),(y)=(t))
//将list中的n个数据,通过选择排序算法排序。
voidselete_sort(intlist[],intn)
{
inti,j,min,temp;
for(i=0;i<n-1;i++){
min=i;
for(j=i+1;j<n;j++)//找出最小元素的下标。
if(list[j]<list[min])
min=j;
SWAP(list[i],list[min],temp);//交换最小元素到当前起始位置。
}
}

❹ 用C语言实现选择排序

程序如下,但是这个题目有些问题,随机产生10000个100之内的整数,根据概率来看至少有100个左右的100,所以输出前10个最大值基本上100%的可能都是100,你要是不放心,可以将我下面的程序里面的k改成10000看一下实际效果:

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <conio.h>

#define N 10000

void SelectSort ( int array[], int n )
{
int nMinIndex;
int nIndex_1, nIndex_2;

for (nIndex_1 = 0;nIndex_1 < n - 1 ;nIndex_1++)
{
nMinIndex = nIndex_1;

for (nIndex_2 = nIndex_1 + 1 ; nIndex_2 < n;nIndex_2++)
{

if ( array[nMinIndex] > array[nIndex_2] )
{
nMinIndex = nIndex_2;
}

}

if ( nMinIndex != nIndex_1 )
{
int temp = array[nIndex_1];
array[nIndex_1] = array[nMinIndex];
array[nMinIndex] = temp ;
}

}
}

void ShowArray(int array[], int k)
{
int i;
for (i = 0; i < k; i++)
{
printf("%d\t", array[i]);
if ((i+1)%10 == 0)
{
printf("\n");
}
}
printf("\n");
}

int main()
{
int array[N] = {0};
int k=10,i;

srand((unsigned) time(NULL));
for(i=0;i<N;i++)
array[i]=rand()%100+1;

SelectSort(array, N);

printf("Sorted Array:\n");
ShowArray(array, k);

system("pause");

return 0;
}

❺ C语言程序 用选择法对十个数排序

#include <stdio.h>

int main()

{int i,j,min,temp,a[11];

printf("enter data: ");

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

{printf("a[%d]=",i);

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

}

printf(" ");

printf("The orginal numbers: ");

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

printf("%5d",a[i]);

printf(" ");

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

{min=i;

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

if (a[min]>a[j]) min=j;

temp=a[i];

a[i]=a[min];

a[min]=temp;

}

printf(" The sorted numbers: ");

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

printf("%5d",a[i]);

printf(" ");

return 0;

}

空白字符

空白字符会使scanf()函数在读操作中略去输入中的一个或多个空白字符,空白符可以是space,tab,newline等等,直到第一个非空白符出现为止。

非空白字符

一个非空白字符会使scanf()函数在读入时剔除掉与这个非空白字符相同的字符。

❻ 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语言 选择法排序

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语言:设计选择排序排序的C语言程序。

选择法排序
#include <stdio.h>
#define N 10
int main()
{
int array[N];
for(int i=0; i<N; i++)
scanf("%d",&array[i]);
for(i=0; i<N; i++)
for(int j=i+1; j<N; j++)
{
if(array[i]<array[j])
{
int t=array[i];
array[i]=array[j];
array[j]=t;
}
}
for(i=0;i<N;i++)
{printf("%3d",array[i]); }
printf("\n");
return 0;
}

程序2
#include <iostream>
using namespace std;
void main()
{
int i,a[10],k=1,z,j;
cout<<"请任意输入10个数,进行排序."<<endl;
for(i=0;i<=9;i++)
{
cout<<"请输入第"<<k++<<"个数字"<<endl;
cin>>a[i];
}

for(i=0;i<=8;i++)
for(j=i+1;j<=9;j++)
if(a[i]<a[j])
{z=a[j];a[j]=a[i];a[i]=z;}
cout<<"从大到小顺序为"<<endl;
for(i=0;i<=9;i++)
cout<<a[i]<<' ';
}

❾ C语言选择排序法

#include<stdio.h>

voidswap(int*a,int*b)
{
*a=*a+*b;
*b=*a-*b;
*a=*a-*b;
}

voidsort(int*a,unsignedintn,unsignedintm)
{
intmin;
intminSite;
for(inti=0;i<n;++i)
{
min=a[i];
minSite=i;
for(intj=1;j<n;++j)
{
if(a[j]<min)
{
min=a[j];
minSite=j;
}
}
swap(&a[i],&a[minSite]);
if(i<m)
{
for(inti=0;i<n;++i)
printf("%d",a[i]);
putchar(' ');
}
}
}intmain()
{
inta[20];
unsignedintn,m;
printf("请输入个数n和需要显示的次数m: ");
scanf("%u%u",&n,&m);
printf("请输入n个整数: ");
for(inti=0;i<n;++i)
{
scanf("%d",&a[i]);
}
printf("m次输出如下: ");
sort(a,n,m);

return0;
}

❿ C语言编程:选择法排序

选择排序是一种简单直观的排序算法。


工作原理:

每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。


性能:

选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。

选择排序的时间复杂度是O(n^2)


思想:

n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果:

①初始状态:无序区为R[1..n],有序区为空。

②第1趟排序

在无序区R[1..n]中选出关键字最小的记录R[k],将它与无序区的第1个记录R[1]交换,使R[1..1]和R[2..n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。

……

③第i趟排序

第i趟排序开始时,当前有序区和无序区分别为R[1..i-1]和R(i..n)。该趟排序从当前无序区中选出关键字最小的记录 R[k],将它与无序区的第1个记录R交换,使R[1..i]和R分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。


C语言版代码:

#include<stdio.h>
#include<math.h>

#defineMAX_SIZE101
#defineSWAP(x,y,t)((t)=(x),(x)=(y),(y)=(t))

voidsort(int[],int);/*selectionsort*/

intmain()
{
inti,n;
intlist[MAX_SIZE];
printf(":");
scanf_s("%d",&n);
if(n<1||n>MAX_SIZE){
fprintf(stderr,"Impropervalueofn ");
exit(1);
}
for(i=0;i<n;i++){/*randomlygeneratenumbers*/
list[i]=rand()*1000;
printf("%d",list[i]);
}
sort(list,n);
printf(" Sortedarray: ");
for(i=0;i<n;i++)/*printoutsortednumbers*/
printf("%d",list[i]);
printf(" ");
return0;
}
voidsort(intlist[],intn)
{
inti,j,min,temp;
for(i=0;i<n-1;i++){
min=i;
for(j=i+1;j<n;j++)
if(list[j]<list[min])
min=j;
SWAP(list[i],list[min],temp);
}
}
热点内容
我配置很高了ae为什么卡 发布:2025-05-17 14:54:50 浏览:167
python数据分析实战pdf 发布:2025-05-17 14:49:42 浏览:950
海澜之家广告脚本 发布:2025-05-17 13:56:06 浏览:30
手文件夹恢复 发布:2025-05-17 13:53:32 浏览:993
linux怎么看进程 发布:2025-05-17 13:53:30 浏览:303
thinkphp字段缓存 发布:2025-05-17 13:52:01 浏览:575
山灵app安卓版如何设置 发布:2025-05-17 13:51:49 浏览:388
帆布压缩袋 发布:2025-05-17 13:26:27 浏览:460
c语言16进制表示方法 发布:2025-05-17 13:11:25 浏览:482
ftp单位 发布:2025-05-17 13:10:03 浏览:144