这个方法的思路也比较容易理解
最终排序的时间是比较的次数与交换的次数的总和 , 这种方法最差的时候交换次数是n-1次,但是还是需要 1+2+3+...+n-1次比较
即时间复杂度为O(n
2)
算法模型在这里
-
#include<stdio.h>
-
-
void swap(int *p1, int *p2)
-
{
-
int tmp;
-
tmp = *p1;
-
*p1 = *p2;
-
*p2 = tmp;
-
}
-
/**************************************************
-
编程思想:
-
总思路:每次一趟找到最小的一个数
-
一.每一趟假设i下标的值最小,每次比较与新下标的值比较,如果有更小的值,记下其下标,循环知道第n个
-
二.如果下标与初始的i不同,交换,那么就找到最小的值了
-
三.i+1开始找到倒数第二小的值......
-
**************************************************/
-
void simple_select_sort(int *src, int n)
-
{
-
int i, j, min;
-
for(i = 0; i < n - 1; i++)
-
{
-
min = i;
-
for(j = i + 1; j < n; j++)
-
if(src[j] < src[min])
-
min = j; //找出最小的小标
-
-
if(min != i)a
-
swap(&src[min], &src[i]); //交换
-
}
-
}
-
-
int main(int argc, char **argv)
-
{
-
int i;a
-
int p[9] = {0, 30, 155, 1, 80, 300, 170, 40, 99};
-
-
simple_select_sort(p, 9);
-
-
for(i = 0; i < 9; i++)
-
printf("p[%d] = %d\n", i, p[i]);
-
while(1);
-
-
}
阅读(1167) | 评论(0) | 转发(0) |