数据结构算法学习总结-慕课网(一)选择排序(从小到大)

原创 2018年04月15日 16:50:09

数据结构算法学习总结-慕课网(一)选择排序(从小到大)

1.说明

语法采用c++,不懂得可以去学习一下c++的基本语法

2.思路

从小到大,也就是后一个比前一个小的话,那么就把二者的顺序交换

3.时间复杂度计算

时间复杂度,T(n)=O(f(n))

选择排序程序执行的次数,f(n)=n^2,所以时间复杂度为O(n^2)

4.代码

SelectionSort.cpp

#include <iostream>
#include "Student.h"
using namespace std;


/**
 * 选择排序
 */
template<typename T>
void selectionSort(T arr[],int n){
	for(int i = 0;i<n;i++){
		int minIndex = i;
		for(int j = i+1;j<n;j++){
			if(arr[j] < arr[minIndex]){
				minIndex = j;
			}
		}
		swap(arr[minIndex],arr[i]);//把a,b交换位置
	}
}


int main() {
	int arr[5] = {1,20,8,4,3};
	selectionSort(arr,5);
	for(int i = 0;i<5;i++){
		cout << arr[i] << " "; //循环打印int数组中的元素
	}
	cout << endl;


	float b[5] = {1.1,5.3,4.2,0.3,2.5};
	selectionSort(b,5);
	for(int i = 0;i<5;i++){
		cout << b[i] << " "; //循环打印float数组中的元素
	}
	cout << endl;


	string c[5] = {"A","D","B","C","E"};
	selectionSort(c,5);
	for(int i = 0;i<5;i++){
		cout << c[i] << " "; //循环打印string数组中的元素
	}
	cout << endl;


	Student s[5] = {{"A",50},{"D",60},{"B",30},{"E",90},{"C",60}};
	selectionSort(s,5);


	for(int i = 0;i<5;i++){
		cout << s[i] << " ";//循环打印自定义数组中的元素
	}
	cout << endl;




	return 0;
}


Student.h

#ifndef STUDENT_H_
#define STUDENT_H_

#include <iostream>
using namespace std;

struct Student{
	string name;
	int score;
	bool operator<(const Student &otherStudent){
		return score!=otherStudent.score?score<otherStudent.score:name<otherStudent.name;
	}
	friend ostream&operator<<(ostream&os,const Student &student){
		os<<"Student: "<<student.name<<" "<<student.score<<",";
		return os;
	}

};

#endif /* STUDENT_H_ */


数据结构算法学习总结-慕课网(六)归并排序(从小到大)

数据结构算法学习总结-慕课网(六)归并排序(从小到大)1.回顾上一节讲到冒泡排序,对它有了基本的认识这一节会讲性能比较好的归并排序2.思路如图首先会创建一个与原{2,3,6,8}一模一样的数组temp...
  • libinbin147256369
  • libinbin147256369
  • 2018-04-16 19:55:20
  • 10

数据结构算法学习总结-慕课网(三)插入排序,与选择排序的比较(从小到大)

数据结构算法学习总结-慕课网(三)插入排序,与选择排序的比较(从小到大)1.思路插入排序是将下标为0,1,...的数组的第1个元素开始,第二层循环,如果后一个比前一个小,那么就将后一个与前一个交换位置...
  • libinbin147256369
  • libinbin147256369
  • 2018-04-15 23:24:45
  • 5

数据结构算法学习总结-慕课网(九)快速排序(从小到大)

数据结构算法学习总结-慕课网(九)快速排序(从小到大)1.回顾上一节降到了自底向上的归并排序这一节将讲一个性能很高的排序,快速排序2.分析快速排序的思想是首先取数组的第一个元素,记为v,找到一个合适的...
  • libinbin147256369
  • libinbin147256369
  • 2018-04-18 16:58:30
  • 7

选择排序,从小到大,从大到小

从小到大 #include #define N 4 void xuanze(int a[]) { int i,j,min,t; for(i=0;i
  • JSY1997
  • JSY1997
  • 2017-03-12 20:18:14
  • 783

冒泡和选择排序的递归算法

算法代码如下: #include #include void printf_sort(int a[],int n) {//输出数组 a[]中的元素 for(int j=0; j...
  • shyazhut
  • shyazhut
  • 2016-07-20 17:09:54
  • 590

选择排序算法(按从小到大排序)

算法原理是每次循环时都把最小的数字往前提.不多说了直接上代码 public static void seleteMinSort(int[] arry) { for (int i = 0; i &a...
  • Raynorliu
  • Raynorliu
  • 2018-03-08 13:38:53
  • 53

慕课网原来的免费路径网址,快收藏。

1、Java工程师 http://www.imooc.com/course/programdetail/pid/31 2、Web前端工程师 http://www.imooc.com/course/p...
  • u012687612
  • u012687612
  • 2017-02-17 15:30:00
  • 875

数据结构算法学习总结-慕课网(八)归并排序(自底向上,从小到大)

数据结构算法学习总结-慕课网(八)归并排序(自底向上,从小到大)1.回顾上一节讲到自顶向下递归的归并排序的优化,我们完全可以自底向上归并,不需要使用递归2.实战main.cpp#include &am...
  • libinbin147256369
  • libinbin147256369
  • 2018-04-18 11:28:38
  • 5

数据结构算法学习总结-慕课网(四)插入排序的优化(从小到大)

数据结构算法学习总结-慕课网(四)插入排序的优化(从小到大)1.回顾插入排序template&amp;lt;typename T&amp;gt; void insertSort(T arr[],in...
  • libinbin147256369
  • libinbin147256369
  • 2018-04-16 10:23:28
  • 6
收藏助手
不良信息举报
您举报文章:数据结构算法学习总结-慕课网(一)选择排序(从小到大)
举报原因:
原因补充:

(最多只允许输入30个字)