c语言实现选择排序
2015-05-22 16:06
337 查看
选择排序的思想是将待排序的数组进行循环,从data[1]开始,分别用data[2]到data[n-1]进行比较,如果比data[1]小,则记录下data[j]在数组中的位置,将j复制到index中,在继续让data[2]到data[n-1]与data[index]进行比较,如果存在比data[index]小的那么继续将其复制到data[index]中,這样一遍循环下来便可找到data[1]到data[n-1]中最小的数字,接下来将data[1]最小的数data[index]进行交换,用data[0]做为哨兵,這样循环一遍便可以找到最小的元素,以此类推,循环n-1遍便可以完成整个排序过程。需要注意的是 选择排序是不稳定的排序方法(比如序列[5,
5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。
5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。
#include<stdio.h> typedef struct{ int key; char name[10]; }Data; Data listOld[]={{0,"num0"},{49,"num1"},{37,"num2"},{56,"num3"},{67,"num4"},{43,"num5"},{97,"num6"},{23,"num7"},{49,"num8"}}; void printfData(Data *pdata,int n); void selectSort(Data *pdata,int n); int main(int argc,char argv[]){ selectSort(listOld,9); printfData(listOld,9); return 0; } void printfData(Data *pdata,int n) { int i; for(i=1;i<n;i++) { printf("%d,%s ",pdata[i].key,pdata[i].name); } printf("\n"); } void selectSort(Data *pdata,int n){ int index,i,j; for(i=1;i<n;i++){ index = i; pdata[0] = pdata[i]; for(j=i+1;j<n;j++){ if(pdata[j].key<pdata[index].key) { index = j; } } if(index!=i){ pdata[0]=pdata[i]; pdata[i]=pdata[index]; pdata[index]=pdata[0]; } } }
#include<stdio.h> typedef struct{ int key; char name[10]; }Data; Data listOld[]={{0,"num0"},{49,"num1"},{37,"num2"},{56,"num3"},{67,"num4"},{43,"num5"},{97,"num6"},{23,"num7"},{49,"num8"}}; void printfData(Data *pdata,int n); void selectSort(Data *pdata,int n); int main(int argc,char argv[]){ selectSort(listOld,9); printfData(listOld,9); return 0; } void printfData(Data *pdata,int n) { int i; for(i=1;i<n;i++) { printf("%d,%s ",pdata[i].key,pdata[i].name); } printf("\n"); } void selectSort(Data *pdata,int n){ int index,i,j; for(i=1;i<n;i++){ index = i; pdata[0] = pdata[i]; for(j=i+1;j<n;j++){ if(pdata[j].key<pdata[index].key) { index = j; } } if(index!=i){ pdata[0]=pdata[i]; pdata[i]=pdata[index]; pdata[index]=pdata[0]; } } }
相关文章推荐
- C语言 选择排序算法原理和实现 从数组中 找出最小的元素然后交换位置
- [算法练习]选择排序的C语言实现
- C语言实现单向链表及其各种排序(含快排,选择,插入,冒泡)
- C语言实现选择排序、直接插入排序、冒泡排序的示例
- c语言实现选择排序、冒泡排序、插入排序
- C语言数组实现冒泡排序和选择排序程序
- C语言实现单向链表及其各种排序(含快排,选择,插入,冒泡)
- 单链表冒泡、选择排序的c语言实现
- 使用C语言和Java分别实现冒泡排序和选择排序
- C语言基本排序算法之插入排序与直接选择排序实现方法
- 几种基本的排序算法(选择排序,冒泡排序,快速排序,归并排序,希尔排序)C语言实现
- C语言链表中数组实现数据选择排序,升序、降序功能主要难点
- 数据结构之选择排序的实现(C语言)
- C语言实现 排序源程序(包括直接插入、希尔、冒泡、快速、简单选择、堆排序)
- C语言选择排序详解及其实现
- (排序)用C语言实现的简单选择排序(选择排序,其实个人认为也是交换排序)
- 用c语言实现选择排序
- C语言链表中数组实现数据选择排序,升序、降序功能主要难点
- C语言选择排序详解及其实现
- C语言分别实现冒泡排序、快速排序、选择排序