C语言中的选择排序法是什么篇1
选择排序(Selectionsort)是一种简单直观的排序算法。工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
以下是一个实现选择排序的例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
#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);//交换最小元素到当前起始位置。
}
}
写出选择排序法的过程篇2
template<classT>
classList
{protected:
intcount;
Tentry[maxList];
public:
List(intsize)
{count=size;}
voidinput()
{for(inti=0;i<count;i++)
cin>>entry[i];
}
voidoutput()
{for(inti=0;i<count;i++)
cout<<entry[i]<<"";
}
//otherfunctionmembers
};
template<classT>
classSortable_list:publicList<T>
{public:
Sortable_list(intsize):List<T>(size){}
voidshell_sort();
voidstraight_selection_sort();
voidinsertion_sort();
private:
intmax_key(intlow,inthigh);
voidsort_interval(intstart,intincrement);
};
template<classT>
intSortable_list<T>::max_key(intlow,inthigh)
{intk=low;
for(intj=low+1;j<=high;j++)
if(entry[k]<entry[j])
k=j;
returnk;
}
template<classT>
voidSortable_list<T>::straight_selection_sort()
{Ttemp;
intk;
for(inti=count-1;i>=1;i--)
{k=max_key(0,i);
if(k!=i)
{temp=entry[i];
entry[i]=entry[k];
entry[k]=temp;
}
}
}
这里我给出了一部分程序代码,后半部分就是选择排序算法,过程就是由这个算法实现
选择排序法篇3
这是冒泡法吧粘些资料给你:冒泡排序和选择排序是排序算法中比较简单和容易实现的算法。
冒泡排序的思想为:每一次排序过程,通过相邻元素的交换,将当前没有排好序中的最大(小)移到数组的最右(左)端。而选择排序的思想也很直观:每一次排序过程,我们获取当前没有排好序中的最大(小)的元素和数组最右(左)端的元素交换,循环这个过程即可实现对整个数组排序。
还有“。
c语言用指针写选择排序法篇4
你的程序没错,只不过这不是选择法,是冒泡发,选择发如下:
voidsort(int*a,intn)
{
inti,j,t,temp;
for(i=0;i{
t=i;/初始定义t为未排序数的第一个
for(j=i+1;j{
if(*(a+t)t=j;
}
temp=*(a+i);/t是最大的那个数的位置,把他和未排序的第一个交换位置
*(a+i)=*(a+t);
*(a+t)=temp;
}
}
main()
{
inti,a[10],*p=a;
printf("inputzhearraya:\n");
for(i=0;iscanf("%d",p++);
printf("\n");
p=a;
sort(p,10);
p=a;
printf("zhesortarrayis:\n");
for(i=0;iprintf("%d,",a[i]);
getch();
}
选择排序法:从小到大排列10个数并输出篇5
/*选择排序法:从小到大排列10个数并输出*/
#include<stdio.h>
#defineN10
voidmain()
{
inti,a[N],t,j;
for(i=0;i<N;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;}
printf("排序后:\n");
for(i=0;i<N;i++)printf("%d",a[i]);
printf("\n");
}
c语言中选择排序法的程序怎么编篇6
第一个输入是数据总数
下面是每个数据分别输入
#include<stdio.h>
#include<stdlib.h>
#defineMAX50000
intAA[MAX],n;
voidgetdata(){
inti;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&AA[i]);
}
voidputdata(){
inti;
for(i=0;i<n;i++)
printf("%d",AA[i]);
}
intpartion(intt,intp,intq){
inttem,i,j,v;
i=p;
j=q;
v=AA[t];
while(1){
while(AA[i]<=v&&i<=q)
++i;
while(AA[j]>v&&j>=p)
--j;
if(i>j)
break;
tem=AA[i];
AA[i]=AA[j];
AA[j]=tem;
}
AA[t]=AA[j];
AA[j]=v;
returnj;
}
voidpartionsort(intp,intq){
intj;
if(p<q){
j=partion(p,p+1,q);
partionsort(p,j-1);
partionsort(j+1,q);
}
}
intmain(intargc,char*argv[])
{
getdata();
partionsort(0,n-1);
putdata();
return0;
}
C语言的选择排序法应该怎么用篇7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<stdio.h>
voidmain()
{
inti,j,a[3],tmp;
printf("请输入3个数(用空格隔开):");
for(i=0;i<3;i++)
scanf("%d",&a[i]);
for(i=0;i<2;i++)
for(j=i+1;j<3;j++)
if(a[i]>a[j]){
tmp=a[i];
a[i]=a[j];
a[j]=tmp;
}
for(i=0;i<3;i++)
printf("%d",a[i]);
printf("\n");
}
满意请采纳!