c - 冒泡/选择排序.

 1 #include <stdio.h>
 2
 3 void
 4 bubbleSort(int *, int);
 5
 6 void
 7 selectSort(int *, int);
 8
 9 void
10 show(int *, int);
11
12 void
13 swap(int *, int, int);
14
15 int
16 main(void) {
17     int a[8] = {555, 2, 3, 77, 66, 5, 0, -3};
18     int len = 8;
19     show(a, len);
20     //bubbleSort(a, 4);
21     selectSort(a, len);
22     show(a, len);
23     return 0;
24 }
25
26 //冒泡排序
27 void
28 bubbleSort(int *a, int len) {
29     for(int i = 0; i < len - 1; i++) {
30         bool isSwap = false;    //若已排好序,则不再排.
31         for(int j = 0; j < len - i - 1; j++) {
32             if(a[j] > a[j+1]) {
33                 swap(a, j, j +1);
34                 isSwap = true;
35             }
36         }
37         if(!isSwap)    break;
38     }
39 }
40
41 //普通选择排序.
42 void
43 selectSort(int *a, int len) {
44     for(int i = 0; i < len - 1; i++) {
45         bool isSwap = false;    //若已排好序,则不再排.
46         for (int j = i + 1; j < len; j++) {
47             if(a[i] > a[j]) {
48                 swap(a, i, j);
49                 isSwap = true;
50             }
51         }
52         if(!isSwap)    break;
53     }
54 }
55
56 //一般有3中交换方法,这种方法比较节省内存.
57 void
58 swap(int *a, int i, int j) {
59     a[i] = a[i] ^ a[j];
60     a[j] = a[i] ^ a[j];
61     a[i] = a[i] ^ a[j];
62 }
63
64 //打印数组
65 void
66 show(int *a, int len) {
67     int i;
68     for(i = 0; i < len; i++)
69         printf("%d ", a[i]);
70     printf("\n");
71 }
时间: 2024-10-01 07:19:02

c - 冒泡/选择排序.的相关文章

冒泡 选择排序

算法一直是编程的基础,而排序算法是学习算法的开始,排序也是数据处理的重要内容.所谓排序是指将一个无序列整理成按非递减顺序排列的有序序列.排列的方法有很多,根据待排序序列的规模以及对数据的处理的要求,可以采用不同的排序方法.那么就整理下网上搜索的资料,按自己的理解,把C语言的8大排序算法列出来. 普通意义上,排序算法可以分为三大类: 1 交换类排序法2 插入类排序法3 选择类排序法 一.交换类排序法 所谓交换排序法是指借助数据元素之间互相交换进行排序的方法.冒泡排序与快速排序法都属于交换类排序方法

c语言冒泡和选择排序

冒泡排序代码: //冒泡排序 void arr(){     int arr[] = {3,2,4,1};     int count = sizeof(arr)/sizeof(arr[0]);     for (int i=0; i<count-1; i++) {         for (int j=0; j<count-i-1; j++) {                         if (arr[j]<arr[j+1]) {                 int tem

分享一个多线程实现[冒泡][选择][二分法]排序的例子

线程的使用规则我将会在我另一篇文章<Delphi中使用比较少的一些语法>中进行介绍,这里只开放一篇Delphi原代码的算法: //工程文件:Sort_MultiThread.dpr program Sort_MultiThread; uses  Forms,  SortUI in 'SortUI.pas' {fmSortUI},  SortUC in 'SortUC.pas'; {$R *.res} begin  Application.Initialize;  Application.Mai

算法小结-冒泡、选择排序、直接插入排序

1.冒泡排序法:比较相邻的两个元素,如果前边比后边大,就对调两元素,一趟下来,最大的数放在最右边,就像泡泡上升一样. 代码: /* * 冒泡 */ static void bubble_sort(int[] array) { for (int i = 0; i < array.length; i++) { for (int j = i; j < array.length; j++) { if (array[i] > array[j]) { int temp = array[i]; arr

java冒泡算法和选择排序法

1 package test.auto; 2 3 import java.util.Arrays; 4 5 import org.apache.bcel.generic.FieldGenOrMethodGen; 6 7 public class Maopao0807{ 8 9 public static void main(String[] args) { 10 //冒泡,每个相邻进行比较 11 int a[]={ 6, 5, 3, 1, 8, 7, 2, 4 , 0}; 12 for (int

快排,冒泡排,选择排序,希尔排序

package cn.hncu.dataStruct; public class SortMethods { /* 算法好坏的评价指标(一般只在n值非常大的时候才会考虑,如n取10万): * 1.时间复杂度: 通俗点,就是指程序运行的快慢(时间)---通常用计算机的运算(算术,赋值)次数来代替 * 2.空间复杂度: 占用内存空间的大小---通常用程序中使用了多少变量(栈内存.堆内存),这些变量总共占了多少内存 */ public static void main(String[] args) {

一招教你搞定c语言中冒泡和选择排序

一.选择排序 很多学习C语言的同学都被这两种排序而难倒.每次拿到这样一组数字就不知道从何下手了,要不就是那些运用的不太熟悉,每次写起代码来又得花一大半时间让费在这排序上,总是找不到一种好的办法去学习它.那么接下来,我将我所学到的排序方法分享给大家,告诉你们以后遇到这种排序千万不能急.当然,很多企业面试的时候种排序也是必考的,所以我们务必要把他们搞懂,不能让这么小小的排序阻挡了我们前进的步伐.好了,那我们来看看吧! 我选择的方法是函数调用的方法,将排序的具体方式通过函数调用到main函数中执行,具

选择法和冒泡法排序接口

#define ret_ok 0 #define ret_err 1 #define ARRAY_SIZE 10 /*选择法排序*/ int Choice_Sort(int array[],int array_len) { int i = 0; int j = 0; int iMin = 0; int iTemp = 0; int iFlag = 0; for(i=0;i<array_len-1;i++) { iMin = i; for(j=i+1;j<array_len;j++) { if(

冒泡法和选择排序法(比较容易写混)

1 #include<stdio.h> 2 3 4 //冒泡排序法 5 6 void bubbling(int a[],int n); 7 8 //选择排序法 9 void choose(int a[],int n); 10 int main() 11 { 12 int i; 13 int s[6]; 14 printf("please enter five numbers:\n"); 15 for(i=1;i<6;i++) 16 { 17 scanf("%