c_cpp 插入ソート,バブルソート,クイックソートの各种アルゴリズムソースコード(计测用主关数も付属)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 插入ソート,バブルソート,クイックソートの各种アルゴリズムソースコード(计测用主关数も付属)相关的知识,希望对你有一定的参考价值。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void swap(int *p_from, int *p_to) {
int tmp;
tmp = *p_from;
*p_from = *p_to;
*p_to = tmp;
}
// 挿入ソート
void insertionSort(int arr[], int data_size){
int i, j, tmp;
for(i=0; i<data_size; i++){
j = i;
while( (j>0) && (arr[j-1]>arr[j]) ){
swap(&arr[j-1], &arr[j]);
j--;
}
}
}
//バブルソート
void bubbleSort(int arr[], int data_size){
int i, j, tmp;
for(i=0; i<(data_size-1); i++){
for(j=(data_size-1); j>i; j--){
if(arr[j-1]>arr[j]){
swap(&arr[j-1], &arr[j]);
}
}
}
}
// クイックソート
void q_main(int arr[], int left, int right){
int pivot;
int left_hold;
int right_hold;
int tmp;
pivot = arr[left];
if(left < right){
left_hold = left;
right_hold = right;
while(-1){
while(arr[left_hold] < pivot) left_hold++;
while(pivot < arr[right_hold]) right_hold--;
if(left_hold >= right_hold) break;
swap(&arr[left_hold], &arr[right_hold]);
left_hold++;
right_hold--;
}
q_main(arr, left, left_hold - 1);
q_main(arr, right_hold + 1, right);
}
}
void quickSort(int arr[], int data_size){
q_main(arr, 0, data_size-1);
}
// 確認用出力関数
void printArray(int arr[], int data_size){
int k;
for(k=0; k<data_size; k++){
printf("%d\n", arr[k]);
}
}
int main(){
int i;
int data[10000];
int data_size;
int start, end;
int count;
printf("データサイズを入力>>> ");
scanf("%d", &data_size);
start = clock();
for(count=1; count <= 10000; count++){
srand((unsigned)time(NULL));
for(i=0; i<data_size; i++){
data[i] = rand();
}
insertionSort(data, data_size);
// bubbleSort(data, data_size);
// quickSort(data, data_size);
}
end = clock();
printf("処理に要した時間は[%f秒]\n", (end-start)/ (double)CLOCKS_PER_SEC);
// printArray(data, data_size);
return 0;
}
以上是关于c_cpp 插入ソート,バブルソート,クイックソートの各种アルゴリズムソースコード(计测用主关数も付属)的主要内容,如果未能解决你的问题,请参考以下文章
python アルゴリズムクイックリファレンス:クイックソート
[ARC054D]バブルソート
python アルゴリズムクイックリファレンス:选択ソート
python アルゴリズムクイックリファレンス:中央値ソート
java 入力値をいくつか持ち,「结束」と入力されたら升顺で并び替えて(バブルソート)表示する。
html 选択バーでクイックリンク