购物网站seo搜索引擎优化方案,包头有没有专业做淘宝网站的,办公室装修公司哪家好,在线制作表情包生成器软件排序算法有很多#xff0c;记得当初一开始学C时就有这种问题。那个时候会用也最易理解的排序算法#xff0c;就是选择排序了#xff08;当时并不知道这样的算法还有名字#xff09;。 思想 还是先来看看选择排序的思想。选择排序的思想非常直接#xff0c;不是要排序么记得当初一开始学C时就有这种问题。那个时候会用也最易理解的排序算法就是选择排序了当时并不知道这样的算法还有名字。 思想 还是先来看看选择排序的思想。选择排序的思想非常直接不是要排序么那好从所有序列中先找到最小的然后放到第一个位置。之后再看剩余元素中最小的放到第二个位置……以此类推就可以完成整个的排序工作了。可以很清楚的发现选择排序是固定位置找元素。 //
// main.m
// SelectSort
//
// Created by 张贵广 on 15/10/13.
// Copyright © 2015年 HZNU. All rights reserved.
//
// 选择排序#import Foundation/Foundation.h// 选择排序
void selectSort(int *arr, int length) {int i, j;int temp;int minIdx; // 最小值下标for (i0; ilength-1; i) {minIdx i; // 最小值下标先初始化为ifor (ji1; jlength; j) {if (arr[minIdx] arr[j]) { // 如果j下标的数比minIdx下标的数大改变minIdx的值为jminIdx j;}}// 把minIdx下标的值与i下标的值交换temp arr[i];arr[i] arr[minIdx];arr[minIdx] temp;}
}int main(int argc, const char * argv[]) {autoreleasepool {int i;int arr[] {4, 2, 5, 1, 6, 9, 0, 7, 8, 3}; // 定义数组int length sizeof(arr)/sizeof(arr[0]); // 算出数组长度// 调用选择排序selectSort(arr, length);// 输出排序后的数组for (i0; ilength; i) {printf(%i , arr[i]);}printf(\n);}return 0;
} 分析 从选择排序的思想或者是上面的代码中我们都不难看出寻找最小的元素需要一个循环的过程而排序又是需要一个循环的过程。因此显而易见这个算法的时间复杂度也是O(n*n)的。这就意味值在n比较小的情况下算法可以保证一定的速度当n足够大时算法的效率会降低。并且随着n的增大算法的时间增长很快。因此使用时需要特别注意。转载于:https://www.cnblogs.com/zhangguiguang/p/4874955.html