排序算法(一)

来源:互联网 发布:淘宝店女装退货率30 编辑:程序博客网 时间:2024/04/30 09:14
 
// PXSF001.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <iostream>using namespace std;/****************************************************///选择排序算法://将第一个数据与之后的数据相比较,找出最小的放第一个位置//将第二个数据与之后的数据相比较,找出第二小的放第二个位置//直到倒数第二个与最后一个相比较完毕/****************************************************/void select_sort(int data[], int datalen){if (NULL == data || datalen <= 1){return;}for (int i=0; i<datalen-1; i++){int minpos = i;//每次比较时将最小的位置设置为开始比较的位置for (int j=i+1; j<datalen; j++){if (data[minpos] > data[j]){minpos = j;}}if (minpos != i)//minpos值改变了则需要交换位置{int tmp = data[i];data[i] = data[minpos];data[minpos] = tmp;}}}/****************************************************///冒泡排序算法:(交换排序的一种)//将相邻的元素做比较,较小的元素往上冒,较大的元素往下沉//最多排序n-1次/****************************************************/void bubble_sort(int data[], int datalen){if (NULL == data || datalen <= 1){return;}//数组元素为n,整个排序最多为n-1次//i记录排序次数,第一次排序需要比较n-1次,需要比较//第i次排序需要比较n-i次for (int i=1; i<datalen; i++){for (int j=0; j<datalen-i; j++){if (data[j] > data[j+1]){int temp  = data[j];data[j]   = data[j+1];data[j+1] = temp;}}}}/****************************************************///插入排序算法://在要排序的一组数据中,数据元素个数大于或者等于2,假设// pos前面的数据都已经排好序。现在把第pos个数据参与排序//使得整个数组都排好序//【 D0| D1| D2|..... |  |  |  |  Dn-1|】//pos指向D2,假设D2之前的两个数据已经排好序,则用D0与D2做//比较,D1与D2做比较,使得这次完成排序/****************************************************/void insert_sort(int data[], int datalen){if (NULL == data || datalen <= 1){return;}for (int pos=1; pos<datalen; pos++){for (int i=0; i<pos; i++)//使得pos(包含)之前的数据排好序{if (data[i] > data[pos])//与pos数据比较{int temp= data[i];data[i]=data[pos];data[pos]= temp;}}}}int main(int argc, char* argv[]){int test_data[] = {100, 96, 83, 24, 32, 90};int test_len = sizeof(test_data)/sizeof(test_data[0]);cout << "源数据" << endl;for (int i=0; i<test_len; i++){cout << test_data[i] << "  ";}cout << endl;/*select_sort(test_data, test_len);cout << "选择排序后" << endl;for (i=0; i<test_len; i++){    cout << test_data[i] << "  ";}*//*cout << "冒泡排序后" << endl;bubble_sort(test_data, test_len);for (i=0; i<test_len; i++){cout << test_data[i] << "  ";}*/cout << "插入排序后" << endl;insert_sort(test_data, test_len);for (i=0; i<test_len; i++){cout << test_data[i] << "  ";}return 0;}参考资料:

百度文库:http://wenku.baidu.com/view/ed3eeb2e7375a417866f8f0e.html?from=related&hasrec=1
数据结构:http://sjjp.tjuci.edu.cn/sjjg/DataStructure/DS/web/paixu/paixu8.1.1.1.htm

csdn博客:http://blog.csdn.net/Sunboy_2050/article/details/5645831
百度文库:http://wenku.baidu.com/view/df9ddc370b4c2e3f57276386.html
百度文库:http://wenku.baidu.com/view/a2960389d0d233d4b14e6901.html 




 

原创粉丝点击