排序--选择排序
2016-06-02 16:15
411 查看
选择排序的时间复杂度是O(n),虽然选择排序的时间复杂度依然是O(n),但是选择排序交换和移动数据的次数比冒泡少,性能上要强于冒泡排序。
C#版
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace cSharp { class Program { static void Main(string[] args) { int[] arr = { 9, 1, 5, 8, 3, 7, 4, 6, 2 }; SelectSort(arr); for ( int i = 0; i < arr.Length; ++ i ) { Console.Write(arr[i] + ", "); } Console.ReadLine(); } static void SelectSort( int[] arr ) { if (arr.Length < 0) return; for ( int i = 0; i < arr.Length; ++ i ) { int min = i; for ( int j = i + 1; j < arr.Length; ++ j ) { if ( arr[min] > arr[j] ) { min = j; } } if ( min != i ) { int tmp = arr[min]; arr[min] = arr[i] ; arr[i] = tmp ; } } } } }
c++ 版
// c++.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <vector> #include <iostream> using namespace::std; void SelectSort(vector<int>& vec) { if (vec.empty() == true) return ; for (int i = 0; i < vec.size(); ++i) { int min = i ; for (int j = i + 1; j < vec.size(); ++j) { if (vec[min] > vec[j]) { min = j ; } } if (min != i) { int tmp = vec[i] ; vec[i] = vec[min] ; vec[min] = tmp ; } } } int _tmain(int argc, _TCHAR* argv[]) { int arr[] = {9, 1, 5, 8, 3, 7, 4, 6, 2} ; vector<int> vec(arr, arr + 9) ; SelectSort(vec) ; for (vector<int>::iterator it = vec.begin(); it != vec.end(); ++it) { std::cout << *it << ", " ; } std::cout << endl; system("pause"); return 0; }
C 版
// c_c++.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" void SelectSort(int* arr, int length) { for (int i = 0; i < length; ++i) { int min = i ; for (int j = i + 1; j < length; ++j) { if (arr[min] > arr[j]) { min = j ; } } if (min != i) { int tmp = arr[i] ; arr[i] = arr[min] ; arr[min] = tmp ; } } } int _tmain(int argc, _TCHAR* argv[]) { int arr[] = {9, 1, 5, 8, 3, 7, 4, 6, 2} ; int length = 9 ; SelectSort(arr, length) ; for (int i = 0; i < length; ++i) { printf("%d, ", arr[i]); } getchar(); return 0; }
相关文章推荐
- Jquery和JS获取ul中li标签的实现方法
- WPF中如何为ItemsControl添加ScrollViewer并显示ScrollBar
- mysql 手动安装
- 第二阶段个人总结06
- c++--实参和形参
- Linux CentOS6环境下MySQL5.1升级至MySQL5.5版本过程
- How to terminate console on serial port (UART)
- 变相实现textarea文本域
- 买书方案01
- iOS开发UI篇—使用storyboard创建导航控制器以及控制器的生命周期
- sencha 为panel 注册点击事件
- 二叉树 --->树
- AS小贴士
- 内核探索:Regmap 框架:简化慢速 I/O 接口优化性能
- android AsyncTask介绍
- 几个常用网络/服务器监控开源软件
- 华为机试---整形数组合并
- [leetcode] 【链表】142. Linked List Cycle II
- POJ-3083 Children of the Candy Corn
- GIT - 基本概念(对象,索引,提交)