c语言10个经典实例,C 练习实例37 – 排序 | 菜鸟教程

基础算法之简单选择排序(selection sort)

1,名 称:简单选择排序

2,复杂度:O(n^2)

3,实现方式:C语言

4,空间复杂度:O(1)

5,稳定性:不稳定

6,算法思想:总共遍历两次,外层循环是算法总共要至执行的此数,那么为什么呢?因为该算法每一次执行外层循环会进行一次交换,默认i所在的位置是最大或者最小(要根据升序还是降序确定),然后里层循环是确定要交换的数字,请具体的思想请大家去代码中体会吧!

7,算法种类:升序(ascending order)、降序(descending order)

8,算法实现代码:

注意:以下实例在 Windows 平台编译通过, Linux 上没有 conio.h 文件,所以无法编译通过。

Linux 上可以使用 #include 来代替 conio.h 文件提供的功能,安装方法:

ubuntu:

sudo apt-get install libncurses5-dev libncursesw5-dev

Centos:

sudo yum install ncurses-devel ncurses

#include "stdio.h"

#include "conio.h"

void swap(int *a, int *b){

int temp ;

temp = *a;

*a = *b;

*b = temp;

}

//升序---简单选择排序

SelectionSortAsc(int *a,int n){

int i,j,min;

for( i = 0;i < 10; i++){

min = i;

for(j = i+1;j < 10; j++){

if(a[j] < a[min]){

min = j;

}

}

if(min != i)

swap(&a[i],&a[min]);

}

printf("\n ascending order:");

}

//降序---简单选择排序

SelectionSortDesc(int *a,int n){

int i,j,max;

for( i = 0;i < 10; i++){

max = i;

for(j = i+1;j < 10; j++){

if(a[j] > a[max]){

max = j;

}

}

if(max != i)

swap(&a[i],&a[max]);

}

printf("\n descending order:");

}

main(){

int i;

int a[20] = {10,8,6,5,3,2,9,7,4,1};

SelectionSortAsc(a,10);

for(i = 0 ; i < 10; i++)

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

printf("\n");

SelectionSortDesc(a,10);

for(i = 0 ; i < 10; i++)

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

getche();

}

algorithm

algorithm

522***405@qq.com3年前 (2018-03-17)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值