您的位置:首页 > 其它

排序--选择排序

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