1. 程式人生 > >氣泡排序,插入排序,基數排序,互動排序演算法

氣泡排序,插入排序,基數排序,互動排序演算法

一、實驗內容

1、輸入2-10個不為零的正整數,遇到0,代表輸入結束。

2、數字選擇排序方法,1-氣泡排序、2-插入排序、3-基數排序。

3、使用所選排序方法的排序,結果輸出所用方法以及結果,每個數之間用“,”隔開,中間不要有空格。



//============================================================================
// Name        : test02_201100300097.cpp
// Author      : ZhengDujin
// Created on  : 2012-10-27
// Copyright   : Your copyright notice
// Compiler    : MinGCC
// Language    : C/C++
// Description : test02_201100300097 in C++, Ansi-style
//============================================================================
#include <iostream>
using namespace std;

void BubbleSort(int *a,int len){
	//氣泡排序
	int i,j,temp;
	for(i=0;i<len-1;i++){
		for(j=len-1;j>i;j--){
			if(a[j-1]>a[j]){
				temp=a[j-1];
				a[j-1]=a[j];
				a[j]=temp;
				}
			}
		}
		for(i=0;i<len;i++){
			if(i!=len-1)
		    cout<<a[i]<<",";
		    else
		    cout<<a[i];
		}
	}
void 	InsertionSort(int *a,int len){
	//插入排序
	int i,j,t;
	for(i=1;i<len;i++){
		t=a[i];
		j=i-1;
		while(j>=0&&t<a[j]){
			a[j+1]=a[j];
			j--;
			}
			a[j+1]=t;
		}
	for(i=0;i<len;i++){
			if(i!=len-1)
		    cout<<a[i]<<",";
		    else
		    cout<<a[i];
		}
	}

	int maxbit(int data[],int n){
    int d=1;
    for(int i=0;i<n;i++){
        int c=1;
        int p=data[i];
        while(p/10){
            p=p/10;
            c++;
        }
        if(c>d)
         d=c;
    }
    return d;
}

void RadixSort(int data[],int n){
	//基數排序
	int tmp[n];
	int count[n];
    int d=maxbit(data,n);
        int r=1;
    for(int j=0;j<d;j++){
        for(int i=0;i<10;i++)
            count[i]=0;
        for(int i=0;i<n;i++){
            int k=data[i]/r;
            int q=k%10;
            count[q]++;
        }
        for(int i=1;i<10;i++){
            count[i]+=count[i-1];
        }
        for(int j=n-1;j>=0;j--){
            int p=data[j]/r;
            int s=p%10;
            tmp[count[s]-1]=data[j];
            count[s]--;
        }
        for(int i=0;i<n;i++){
            data[i]=tmp[i];
        }
        r=r*10;
    }
    for(int i=0;i<n;i++){
			if(i!=n-1)
		    cout<<data[i]<<",";
		    else
		    cout<<data[i];
		}
}
int main(){
	int num=10,temp,choice,size=10;
    int tlist[num];
    cout<<"Input"<<endl;
    for(int i=0;i<=num-1;i++){
		cin>>temp;

		if(temp==0){
			size=i;
		    break;
		    }
		tlist[i]=temp;


		}
		int list[size];
		for(int i=0;i<=size-1;i++){
			list[i]=tlist[i];
			}
			cout<<"1-氣泡排序,2-插入排序,3-基數排序"<<endl;
			cin>>choice;
			cout<<"Output"<<endl;
			if(choice==1){
				cout<<"氣泡排序"<<endl;
			BubbleSort(list,size);
		    }
			if(choice==2){
				cout<<"插入排序"<<endl;
			InsertionSort(list,size);
			}
			if(choice==3){
				cout<<"基數排序"<<endl;
			  RadixSort(list,size);
			}
			cout<<endl;
			cout<<"End"<<endl;


	       return 0;
	}






相關推薦

自己寫的順序表的基本操作插入、刪除、修改給出完整程式碼其中運用到goto語句

#include<iostream> using namespace std; #define MAXSIZE 100 typedef int DataType; typedef struct {DataType data[MAXSIZE]; //通常用一位陣列

順序表儲存實現氣泡排序選擇排序插入排序希爾排序基數排序

#include<iostream> using namespace std; const int MAXSIZE = 100; typedef int ElemType; struct Data { ElemType key; // int shu

Python八大演算法的實現插入排序、希爾排序氣泡排序、快速排序、直接選擇排序、堆排序、歸併排序基數排序

1、插入排序 描述 插入排序的基本操作就是將一個數據插入到已經排好序的有序資料中,從而得到一個新的、個數加一的有序資料,演算法適用於少量資料的排序,時間複雜度為O(n^2)。是穩定的排序方法。插入演算法把要排序的陣列分成兩部分:第一部分包含了這個陣列的所有元素,但將最後一

九種經典排序演算法詳解(氣泡排序插入排序選擇排序快速排序歸併排序排序計數排序排序基數排序

綜述 最近複習了各種排序演算法,記錄了一下學習總結和心得,希望對大家能有所幫助。本文介紹了氣泡排序、插入排序、選擇排序、快速排序、歸併排序、堆排序、計數排序、桶排序、基數排序9種經典的排序演算法。針對每種排序演算法分析了演算法的主要思路,每個演算法都附上了虛擬

氣泡排序插入排序基數排序互動排序演算法

一、實驗內容 1、輸入2-10個不為零的正整數,遇到0,代表輸入結束。 2、數字選擇排序方法,1-氣泡排序、2-插入排序、3-基數排序。 3、使用所選排序方法的排序,結果輸出所用方法以及結果,每個數之間用“,”隔開,中間不要有空格。 //===========

python: 選擇排序氣泡排序插入排序快速排序

def selectSort(lyst): n = len(lyst) for i in range(n - 1): minindex = i for j in range(i + 1, n): if lyst[j] <

給一組整數按照升序排序使用選擇排序氣泡排序插入排序或者任何 O(n2) 的排序演算法

題目 描述 給一組整數,按照升序排序,使用選擇排序,氣泡排序,插入排序或者任何 O(n2) 的排序演算法。 樣例 對於陣列 [3, 2, 1, 4, 5], 排序後為:[1, 2, 3, 4, 5]。 解答 public class SortNums { pu

排序上篇(選擇排序氣泡排序插入排序希爾排序

1.選擇排序 (1)原理:  在要排序的一組數中,用第一個數與後面的數依次進行判斷,若大於後面的則進行交換;然後依次再用第二個數與後面的數進行交換,如此迴圈到倒數第二個數和最後一個數比較為止。 (2)圖解: 內層第一次迴圈如下:   外層控制迴圈次數:

三大基礎排序氣泡排序選擇排序插入排序)思想

1.氣泡排序 1-1 思想: 氣泡排序思想:從陣列的下標為0的元素開始,首先將下標為0的下標與陣列下標為1的元素比較,如果陣列下標1 的元素更小,交換,接著比較下標1與下標2的元素,如果下標2較小則交換,反之接著將下標2與下標3比較。。。 以此類推,經過n-1趟排序就可以得到結果 。

簡單排序——氣泡排序插入排序逆序對

1、前提 void X_Sort ( ElementType A[], int N )//A是一個數組,N是陣列的個數。 大多數情況下,為簡單起見,討論從小大的整數排序 N是正整數 只討論基於比較的排序(> = < 有定義) 只討論內部

野生前端的資料結構練習(9)氣泡排序選擇排序插入排序

[TOC] 一.氣泡排序 bubble sort的是最基本的演算法,被譽為永遠會被考從來不被用的演算法,基本原則是大數右移,每輪遍歷後最右側的數是最大的,所以下一輪迴圈時可不予考慮,時間複雜度為O(n^2)。 function bubbleSort(arr) { let length = a

氣泡排序插入排序選擇排序(java)

package ch02; public class BubbleSort { public static void sort(long[] arr) { long temp = 0; for(int i = 0; i < arr.length - 1; i

Java排序演算法之——氣泡排序插入排序選擇排序

<1>氣泡排序 這個名詞的還是很形象的,就是每次比較相鄰的兩個數,大的數總是往後面冒,所以每輪比較結束後,大數都會冒到最後面。 每次比較的結果如下: 無序陣列  :8 2 4 3 5 7 1 9 6 (後面所有的排序都將使用這個陣列) 第一輪比較:2 4 3 5

十大排序演算法氣泡排序快速排序插入排序等)

氣泡排序 <1>.比較相鄰的元素。如果第一個比第二個大,就交換它們兩個; <2>.對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對,這樣在最後的元素應該會是最大的數; <3>.針對所有的元素重複以上的步驟,除了最後一個; <4>.

選擇排序氣泡排序插入排序

1.選擇排序 2.氣泡排序/雙向氣泡排序 3.插入排序 1.選擇排序 選擇排序是一種最為直觀的排序方法。每次迴圈從陣列中選擇出一個最小或者最大的元素,按順序重新放入陣列中,直到所有的戴排序元素都排序完成。 public void selectSort(int

排序演算法之----氣泡排序插入排序選擇排序

1 氣泡排序 顧名思義:小的數一點一點向前冒,最終有序 public static void bubbleSort(int[] arr){ if(arr == null || arr.length <2){ return; } for(int i

排序演算法氣泡排序插入排序選擇排序)的Java實現

// 氣泡排序 public int[] bubble(int[] a) { for (int i = 0; i < a.length-1; i++) { // 相鄰的兩個數做比較,小的想上冒泡,-1防止陣列下標越界 for (int j

3. 排序通常有多種演算法氣泡排序插入排序、選擇排序、希爾排序、歸併排序、快速排序請選擇任意2種用java實現 [分值:20] 您的回答:(空) (簡答題需要人工評分)

3. 排序通常有多種演算法,如氣泡排序、插入排序、選擇排序、希爾排序、歸併排序、快速排序,請選擇任意2種用java實現  [分值:20] 您的回答:(空)  (簡答題需要人工評分) package com.interview; /** * 各種排序演算法 */

python: 選擇排序氣泡排序插入排序快速排序

def selectSort(lyst): n = len(lyst) for i in range(n - 1): minindex = i for j in range(i + 1, n): if l

Java-十種內部排序實現(選擇冒泡插入希爾歸併快速基數計數桶)及程式碼下載

選擇排序 氣泡排序 插入排序 希爾排序 堆排序 歸併排序 快速排序 基數排序 計數排序 桶排序 1. 選擇排序 這個排序方法最簡單,廢話不多說,直接上程式碼: public class SelectSort { /** * 選擇排