c语言选择法排序
A. c语言选择排序法和冒泡排序法有什么区别
先上选择法和冒泡法:
1.选择法
#include<stdio.h>
void
main()
{
int
i,j,min,temp;
int
a[10];
printf("请输入十个整数:");
for(i=0;i<=9;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
{
min=i;
for(j=i+1;j<=9;j++)
{
if(a[min]>a[j])
{
min=j;
}
temp=a[j];
a[j]=a[min];
a[min]=temp;
}
}
for(i=0;i<=9;i++)
printf("%4d",a[i]);
}
2.冒泡法
#include<stdio.h>
void
main()
{
int
i,j,temp;
int
a[10];
printf("请输入十个整数:");
for(i=0;i<=9;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
for(j=9;j>i;j--)
{
if(a[j]<a[j-1])
{
temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
}
}/*
for(j=0;j<9-i;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}大的气泡往下沉,小的气泡往上浮!!!注意:是a[j-1]还是a[j+1];
深刻了解!!!
*/
for(i=9;i>=0;i--)
printf("%4d",a[i]);
}
通过这两个程序,可以发现他们的编程还是有些区别的,但是总结下:
相同点:
1.都要通过n-1组排出具有n个数的顺序;
2.都是通过逐个相比,比出最值的;
。。。
不同点:
1.冒泡法,顾名思义就是把小的泡冒到上面,大的泡沉到下面,最值在中间和其他的值交换;
而选择法,是假定了一个最值,所以最值和其他的值的交换就发生在假定最值的地方;
。。。
其实冒泡法和选择法的区别不大,都是效率比较低的方法。
B. c语言数组排序中的选择法是什么意思啊
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中 选出 最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。所以这种排序的方法叫选择法排序。
C语言参考实例:
#include<stdio.h>
voidmain()
{
inta[]={1,3,4,2,0};
inti,j,n=5;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)//每一遍都与当前a[i]比较
if(a[i]<a[j])//大的前移
{
intt=a[i];
a[i]=a[j];
a[j]=t;
}
for(i=0;i<n;i++)
printf("%d",a[i]);
}
C. 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;
}
}
D. 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);//交换最小元素到当前起始位置。
}
}
E. C语言 用选择法排序
这是我写的代码 , 但不知道你是在哪个网站上做的,没法测试,不过应该没问题
#include <iostream>
using namespace std;
int main()
{
int n,a[1000],temp;
while(cin>>n)
{
for(int i=0;i<n;i++)
cin>>a[i];
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
if(a[i]>a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
for(int i=0;i<n;i++)
{
printf("%6d",a[i]);
}
cout<<endl;
}
return 1;
}
F. C语言选择排序法
这是选择排序。先用a[0]与a[1]比较,当a[0]<a[1]时并不交换,而用k记下来现在a[0]最小……这样一趟比较完后a[k]就是整个数组中最小的元素,把它与a[0]交换;第二趟,从a[1]开始重复前面的操作,那么最后a[1]就是剩下的n-1个元素中最小的……看a[0]、a[1]已经由小到大排好了,当做完n-1趟时不就把整个数组都排好了吗?注意:t=array[k];array[k]=array[i];array[i]=t;不是for(j=i+1;j<n;j++)的循环体,要等它循环完了后才执行一次。
G. 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;
}
H. C语言中选择排序法具体是怎样的
选择排序的基本思想是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。基于此思想的算法主要有简单选择排序、树型选择排序和堆排序。
简单选择排序的基本思想:第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r[1]交换;第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它与r[2]交换;以此类推,第i趟在待排序记录r[i]~r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕。