c语言函数的选择法排序 c语言中选择排序法

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

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

十多年的桦川网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网整合营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整桦川建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联建站从事“桦川网站设计”,“桦川网站推广”以来,每个客户项目都认真落实执行。

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

#define SWAP(x, y, t)  ((t) = (x), (x) = (y), (y) = (t))

//将list中的n个数据,通过选择排序算法排序。

void selete_sort(int list[], int n)

{

int i, 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语言怎样通过函数调用实现选择排序法

c语言通过函数调用实现选择排序法:

1、写一个简单选择排序法的函数名,包含参数。int SelectSort(int * ListData,int ListLength);

2、写两个循环,在循环中应用简单选择插入排序:

int SelectSort(int * ListData,int ListLength)

{

int i , j ;

int length = ListLength;

for(i=0;i=length-2;i++)

{

int k = i;

for(j=i+1;j=length-1;j++)

{

if(ListData[k]ListData[j])

{

k=j;

}

}

if(k!=i)

{

int tmp = ListData[i];

ListData[i] = ListData[k];

ListData[k] = tmp;

}

}

return 0;

}

3、对编好的程序进行测试,得出测试结果:

int main()

{

int TestData[5] = {34,15,6,89,67};

int i = 0;

printf("排序之前的结果\n");

for(i = 0;i5;i++)

printf("|%d|",TestData[i]);

int retData = SelectSort(TestData,5);

printf("排序之后的结果:\n");

for(i = 0;i5;i++)

printf("|%d|",TestData[i]);

return 0;

}

4、简单选择排序中,需要移动的记录次数比较少,主要的时间消耗在对于数据的比较次数。基本上,在比较的时候,消耗的时间复杂度为:n*n。

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

#define MAX_SIZE 101

#define SWAP(x, y, t)  ((t) = (x), (x) = (y), (y) = (t))

void sort(int[], int);      /* selection sort */

int main()

{

int i, n;

int list[MAX_SIZE];

printf("Enter the number of numbers to generate: ");

scanf_s("%d", n);

if (n  1 || n  MAX_SIZE){

fprintf(stderr, "Improper value of n\n");

exit(1);

}

for (i = 0; i  n; i++){    /* randomly generate numbers */

list[i] = rand() * 1000;

printf("%d ", list[i]);

}

sort(list, n);

printf("\n Sorted array:\n");

for (i = 0; i  n; i++)    /* print out sorted numbers */

printf("%d ", list[i]);

printf("\n");

return 0;

}

void sort(int list[], int n)

{

int i, 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语言,使用函数的选择法排序

void selectionsort(int a[],int m)

{

int i,j;

int k;

int tmp;

for(i = 0; i  m-1; i++)//控制循环次数,n个数需要n-1次循环

{

k = i;

for(j = i+1; j  m ; j++)

{

if(a[j]  a[k])

k = j;

}

//i不等于k是就证明a[i]不是最小的,

//i等于k时证明a[i]就是本轮比较过程中最小的值

if(i != k)

{

tmp = a[i];

a[i] = a[k];

a[k] = tmp;

}

}

}


本文标题:c语言函数的选择法排序 c语言中选择排序法
本文链接:http://myzitong.com/article/hhgggg.html