当前位置:首页 » 操作系统 » c选择排序算法

c选择排序算法

发布时间: 2022-03-03 21:02:39

c语言选择排序法

外面的for循环,依次从队列中取出一个数用来比较
里面的for循环,用来比较上面选择的数据与后面的每个数据。

Ⅱ 求 c语言选择排序法和 冒泡排序法代码!

选择排序:

void select_sort(int a[],int n) //传入数组的要排序的元素个数

{int i,j,min,t;

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

{ min=i; //min:当前最小值下标

for(j=i+1;j<n;j++) //扫描余下的部分

if(a[min]>a[j]) //若有其它元素更小,就记录其下标

min=j;

if(min!=i) //保若最小值不在排序区首位,就换到首位

{t=a[min]; a[min]=a[i]; a[i]=t;}

}

}

冒泡排序:

void bubble_sort(int a[], int n) //传入数组的要排序的元素个数

{ int i, j, t;

for (j=0; j<n-1; j++) //n个元素比较n-1轮

for (i= 0; i<n-1-j;i++) //比较相信的两个数

if(a[i]>a[i+1]) //若大小顺序不符,就交换

{t=a[i]; a[i]=a[i+1]; a[i+1]=t;

}

Ⅲ C语言关于选择排序法的算法问题

首先,你这是冒泡排序不是选择排序。
书上的算法没啥优点,不管时间复杂度还是所占用得空间都比你写的大,不建议使用。可能这么写唯一的优点是逻辑性更强,便于学生理解吧

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

人家的效率高,交换次数少。比如3、2、1三个数。
你是第一轮3和2换变成2、3、1,再2和1换,变成1、3、2,第二轮3和2换变成1、2、3
他的是第一轮从后面选一个比3小的最小的数,K保存这个数的下标,先k是1,再k是2,一轮循环玩了才3和1交换,变成1、2、3,第二轮不交换。
你的算法没轮交换次数不定,看数据,他的每轮最多交换一次,特别是数据多时用他的效率高很多,因为给K赋值比交换快很多

Ⅵ 关于C选择排序

K=J就是循环复制最小的数给K,这样无论冒泡多少次都可以实现最小的排在最前面!

Ⅶ C语言选择排序算法

voidbubble(inta[],intn)
{
inti,k,temp;
for(k=0;k<n-1;k++)
{
for(i=k+1;i<n;i++)
{
if(a[k]>a[i])
{
temp=a[i];
a[i]=a[k];
a[k]=temp;
}
}
}
for(i=0;i<n;i++)
printf("%d",a[i]);
printf(" ");
}

Ⅷ C语言选择排序法有哪些

从大到小,从小到大。中心就是这两种。

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

}

(9)c选择排序算法扩展阅读

C语言排序法

把一个数组进行排序可以使用选择排序法。选择排序法的原理在是每一趟循环寻找数组中最小的数的下标,然后按照递增的顺序放入数组中。

循环找出最小数的下标,该下标用min保存,直到比较完整个数组,即可找到最小的数,然后将该数放入数组的第一位,这样就排好了一个元素。

需要再嵌套一层外层循环即可排好所有元素。第二次循环就不用再比较第一个元素了,因为第一个元素已经排好,依次类推,每一次循环就会排好一个,进行n-1次循环即可排好所有元素。

Ⅹ C 冒泡排序和选择排序

上面的冒泡,下面的是选择排序

第一层循环可以修改,不过第二层循环也要随之更改:

for(int i=0;i<Count-1;i++)
{
for(int j=Count-1;j>i;j--)

热点内容
java插件浏览器 发布:2024-09-23 17:16:02 浏览:258
微信支付进去手势密码哪里改 发布:2024-09-23 17:02:08 浏览:327
我的世界2g服务器内存 发布:2024-09-23 16:57:55 浏览:581
正则表达式预编译html案例 发布:2024-09-23 16:53:22 浏览:941
文章脚本 发布:2024-09-23 16:48:20 浏览:758
sna2008算法 发布:2024-09-23 16:36:49 浏览:504
哥伦比亚大学访问学者 发布:2024-09-23 16:08:19 浏览:571
devc怎么配置gcc编译环境 发布:2024-09-23 15:52:26 浏览:446
血族第二季ftp 发布:2024-09-23 15:49:58 浏览:528
清楚手机浏览器缓存 发布:2024-09-23 15:47:24 浏览:518