您的位置:首页 > 理论基础 > 数据结构算法

IOS算法(二)之选择排序

2017-05-29 15:53 204 查看
选择排序:

每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后。直到所有待排序的数据元素排完。

选择排序是不稳定的排序方法。


一. 算法描写叙述

选择排序:比方在一个长度为N的无序数组中。在第一趟遍历N个数据,找出当中最小的数值与第一个元素交换,第二趟遍历剩下的N-1个数据,找出当中最小的数值与第二个元素交换......第N-1趟遍历剩下的2个数据,找出当中最小的数值与第N-1个元素交换。至此选择排序完毕。

以以下5个无序的数据为例:

56 12 80 91 20(文中仅细化了第一趟的选择过程)

第1趟:12 56 80 91 20



第2趟:12 20 80 91 56

第3趟:12 20 56 91 80

第4趟:12 20 56 80 91

代码实现:

// main.m

//
算法----选择排序

// Created by lanouhn on 14-9-16.

// Copyright (c) 2014年 summer2014mht@sina.com. All rights reserved.

#import
<Foundation/Foundation.h>

int main(int argc,
const char * argv[])

{

int array[] = {12,2,
6, 9, 8,
5, 7, 1,
4};

//为了添加可移植性(採取sizeof())计算数组元素个数count

int count = sizeof(array) /sizeof(array[0]);

//

for (int i = 0; i < count -
1; i++) { //比較的趟数

int minIndex = i;//查找最小值

for (int j = minIndex +1; j < count; j++ ) {

if (array[minIndex] > array[j]) {

minIndex = j;

}

}

//假设没有比較到最后还剩余一个数,那么就运行以下的操作

if (minIndex != i) {

//交换数据

int temp = 0;

temp = array[i];

array[i] = array[minIndex];

array[minIndex] = temp;

}

}

for (int i = 0; i < count; i++) {

printf("[%2d]: %d\n", i, array[i]);

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: