开始学数据结构——(一):选择排序
来源:互联网 发布:戴尔显卡切换软件 编辑:程序博客网 时间:2024/06/06 15:35
/*选择排序 第一步 : 遍历找到最小的数,和第一个数交换位置;
然后从第二个数开始找,直到找到最小的数和第二个交换位置;
SQ——2014 04 14
*/
#include<stdio.h>
void swap(int * aa , int * bb);
void select(int cc[] ,int n);
int aa =10;
int bb= 5;
printf("aa=%d bb= %d" ,aa,bb);
swap(&aa ,&bb); //测试两个数值的交换;
printf("aa=%d bb= %d" ,aa,bb);
//--------------test _2!--------------------
int cc[10] ={10,8,9,7,6,4,5,3,2,1};
int i;
for (i =0; i< (sizeof(cc)/sizeof(cc[0])); i++)
printf(" %d \n" ,cc[i]);
select(cc ,10); //测试整个数组的排序;
printf("after select!");
for (i =0; i< (sizeof(cc)/sizeof(cc[0])); i++)
printf(" %d \n" ,cc[i]);
return 0;
}
void select( int a[] ,int n){
int i,j,key;
int t;
for (i=0;i < n ; i++) {
key = a[i]; //保存每次遍历需要替换的值。
t =i;
for(j = i +1 ; j < n ;j++) {
if (key > a[j]) {key =a[j]; //至此,key保存的就是最小的元素,然后交换即可。
t =j;
} //有个问题,key是最小值不错,但是如何确定最小值的位置?
//所以用t来保存每次最小值的位置。
}
if( t != i) //若本来就算最小的,那么就不要替换了。
swap(&a[i] , &a[t]);
}
}
void swap(int * aa , int * bb){
//传递过来的是指针,所以你对指针进行改动是没有意义的。
int tmp;
tmp = *aa;
*aa = *bb;
*bb = tmp;
然后从第二个数开始找,直到找到最小的数和第二个交换位置;
SQ——2014 04 14
*/
#include<stdio.h>
void swap(int * aa , int * bb);
void select(int cc[] ,int n);
int main()
{int aa =10;
int bb= 5;
printf("aa=%d bb= %d" ,aa,bb);
swap(&aa ,&bb); //测试两个数值的交换;
printf("aa=%d bb= %d" ,aa,bb);
//--------------test _2!--------------------
int cc[10] ={10,8,9,7,6,4,5,3,2,1};
int i;
for (i =0; i< (sizeof(cc)/sizeof(cc[0])); i++)
printf(" %d \n" ,cc[i]);
select(cc ,10); //测试整个数组的排序;
printf("after select!");
for (i =0; i< (sizeof(cc)/sizeof(cc[0])); i++)
printf(" %d \n" ,cc[i]);
return 0;
}
void select( int a[] ,int n){
int i,j,key;
int t;
for (i=0;i < n ; i++) {
key = a[i]; //保存每次遍历需要替换的值。
t =i;
for(j = i +1 ; j < n ;j++) {
if (key > a[j]) {key =a[j]; //至此,key保存的就是最小的元素,然后交换即可。
t =j;
} //有个问题,key是最小值不错,但是如何确定最小值的位置?
//所以用t来保存每次最小值的位置。
}
if( t != i) //若本来就算最小的,那么就不要替换了。
swap(&a[i] , &a[t]);
}
}
void swap(int * aa , int * bb){
//传递过来的是指针,所以你对指针进行改动是没有意义的。
int tmp;
tmp = *aa;
*aa = *bb;
*bb = tmp;
}
顺便说下时间复杂度 : 最外层循环为 n ;然后里面每次都需要m ,则为O(n2);
空间 的话只需要一个空间用来交换位置;
稳定的话:不稳定 (比如序列【5, 5, 3】第一趟就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)
0 0
- 开始学数据结构——(一):选择排序
- 开始学数据结构——(一):选择排序
- 开始学数据结构——(二):冒泡排序
- 开始学数据结构——(三):插入排序
- 开始学数据结构——(二):冒泡排序
- 开始学数据结构——(三):插入排序
- 开始学数据结构——(四):归并排序
- 开始学数据结构——(六):希尔排序
- 开始学数据结构——(六):快速排序
- 数据结构 — 选择排序
- 开始学数据结构——(五):二分查找 ,递归
- 数据结构——选择排序
- 数据结构——选择排序
- 数据结构——选择排序
- 从零开始_学_数据结构(六)——排序(冒泡、插入、希尔、简单选择、归并、快速)
- 简单选择排序-------零基础学数据结构
- 简单选择排序-------零基础学数据结构
- 数据结构&算法实践—【排序|选择排序】选择排序
- android横竖屏切换与activity的销毁重建
- 命令行查看android数据库
- HDU4737线段树
- 学习笔记_java web—EL表达式
- .net 获取根目录的方法集合
- 开始学数据结构——(一):选择排序
- ACR10E
- XHTML
- 什么是数字PLL
- c#学习笔记杂项(一)
- 把UIView切成任意形状
- 找到心脏病人支架后胸闷恶心头晕的治疗方法
- 有关推挽输出、开漏输出、复用开漏输出、复用推挽输出以及上拉输入、下拉输入、浮空输入、模拟输入区别
- 硬盘数据丢失具体恢复教程