1.写出选择排序法的过程
template <class T>
class List
{ protected:
int count;
T entry[maxList];
public:
List(int size)
{ count=size; }
void input()
{ for(int i=0; i<count; i++)
cin>>entry[i];
}
void output()
{ for(int i=0; i<count; i++)
cout<<entry[i]<<" ";
}
//other function members
};
template <class T>
class Sortable_list: public List<T>
{ public:
Sortable_list(int size):List<T>(size){ }
void shell_sort();
void straight_selection_sort();
void insertion_sort();
private:
int max_key(int low, int high);
void sort_interval(int start, int increment);
};
template <class T>
int Sortable_list<T> :: max_key(int low, int high)
{ int k=low;
for(int j=low+1; j<=high; j++)
if ( entry[k]<entry[j] )
k=j;
return k;
}
template <class T>
void Sortable_list<T> :: straight_selection_sort()
{ T temp;
int k;
for(int i=count-1; i>=1; i--)
{ k=max_key(0,i);
if ( k!=i )
{ temp=entry[i];
entry[i]=entry[k];
entry[k]=temp;
}
}
}
这里我给出了一部分程序代码,后半部分就是选择排序算法,过程就是由这个算法实现
2.选择排序法
这是冒泡法吧粘些资料给你:冒泡排序和选择排序是排序算法中比较简单和容易实现的算法。
冒泡排序的思想为:每一次排序过程,通过相邻元素的交换,将当前没有排好序中的最大(小)移到数组的最右(左)端。而选择排序的思想也很直观:每一次排序过程,我们获取当前没有排好序中的最大(小)的元素和数组最右(左)端的元素交换,循环这个过程即可实现对整个数组排序。
还有“ 。
3.C语言中的选择排序法是什么
选择排序(Selection sort)是一种简单直观的排序算法。工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
以下是一个实现选择排序的例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
#define SWAP(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);//交换最小元素到当前起始位置。
}
}
4.C语言的选择排序法应该怎么用
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");
}
满意请采纳!
5.c语言中选择排序法的程序怎么编
第一个输入是数据总数
下面是每个数据分别输入
#include <stdio.h>
#include <stdlib.h>
#define MAX 50000
int AA[MAX],n;
void getdata(){
int i;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&AA[i]);
}
void putdata(){
int i;
for(i=0;i<n;i++)
printf("%d ",AA[i]);
}
int partion(int t, int p ,int q){
int tem,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;
return j;
}
void partionsort(int p,int q){
int j;
if(p<q){
j=partion(p,p+1,q);
partionsort(p,j-1);
partionsort(j+1,q);
}
}
int main(int argc, char *argv[])
{
getdata();
partionsort(0,n-1);
putdata();
return 0;
}
6.选择排序法:从小到大排列10个数并输出
/*选择排序法:从小到大排列10个数并输出*/
#include<stdio.h>
#define N 10
void main()
{
int i,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");
}
7.c语言用指针写选择排序法
你的程序没错,只不过这不是选择法,是冒泡发,选择发如下:
void sort(int *a,int n)
{
int i,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()
{
int i,a[10],*p=a;
printf("input zhe array a:\n");
for(i=0;iscanf("%d",p++);
printf("\n");
p=a;
sort(p,10);
p=a;
printf("zhe sort array is:\n");
for(i=0;iprintf("%d,",a[i]);
getch();
}
转载请注明出处育才学习网 » 选择排序法怎么写(写出选择排序法的过程)