首先介绍一下什么是选择排序:
选择排序法 是对 定位比较交换法(也就是冒泡排序法) 的一种改进。选择排序的基本思想是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键
简单选择排序的基本思想:第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r[1]交换;第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它
与r[2]交换;以此类推,第i趟在待排序记录r[i]~r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕。
以下是我将我的冒泡排序修改了一下:
#include <stdio.h> void swap(int *a,int *b) { int c; c = *a; *a = *b; *b = c; } int main() { int str[]={2, 5, 6, 11, 4, 7, 8, 55, 0, 3}; int i; int j; int len;· len =sizeof(str)/sizeof(str[0]); int str1[len]; for(i=0; i<len; i++) { printf("%3d",str[i]); } printf("\n"); for(i=0; i<len; i++) { for(j=0;j<len-i-1;j++) { if(str[j] > str[j+1]) { swap(&str[j],&str[j+1]); } } str1[i] = str[j]; } for(i=0; i<len; i++) { printf("%3d",str[i]); } printf("\n"); for(i=0; i<len; i++) { printf("%3d",str1[i]); } printf("\n");
return 0; }
运行结果如下:
[lalala@jjjjj ~]$ ./paixv
我是将选择出来的最大的元素放进了一个新的数组里;创建了一个新的递减的序列;2 5 6 11 4 7 8 55 0 3 0 2 3 4 5 6 7 8 11 55 55 11 8 7 6 5 4 3 2 0