c语言冒泡排序

冒泡排序c语言实现

筅森魡賤 提交于 2020-03-07 19:10:48
冒泡排序的基本思想是: 1.在长度为n的数组,通过不断比较两个相邻元素,把值大的往后移动,当遍历完最后一个元素时,最大值存放在数组[n-1]下标位置。 2.通过步骤1的比较后,数组长度为n-1(因为arr[n-1]的元素已是整个数组最大的,没必要再比较),然后再在长n-1的数组中找出次大的数放到 arr[n-2]位置,比较完成后数组无序部分长度为 n-2,然后循环执行这步直到数组无序部分长为1。 // 在长为len 的数组中,循环 n-2次比较,把最大值放在 arr[n-1]位置void buble(int arr[], int len) { for(int i = 0; i < len-1; i++) { if(arr[i] > arr[i+1]) { int temp = arr[i]; arr[i] = arr[i+1]; arr[i+1] = temp; } } } 以上完成把数组最大的元素放在arr[n-1]位置,现在数组无序的部分只有前面的arr[0]~arr[n-2],则循环设置数组长度设置为 n-1(找出次大的放在arr[n-2]), n-2, ..., 1, 最后完成 排序,第二步代码为 void bubble_sort(int arr[], int len) { for(int i = len; i > 0; i--) //数组从长到短,每循环一次

冒泡排序

别说谁变了你拦得住时间么 提交于 2019-12-28 11:28:09
冒泡排序: 算法步骤: 1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完 后,最后的元素会是最大的数。 3.针对所有的元素重复以上的步骤,除了最后一个。 4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 # include <iostream> using namespace std ; void bubbleSort ( int r [ ] ) { int exchange = 6 ; int a ; while ( exchange ) { a = exchange ; exchange = 0 ; for ( int j = 1 ; j < a ; j ++ ) { if ( r [ j ] > r [ j + 1 ] ) { r [ 0 ] = r [ j ] ; r [ j ] = r [ j + 1 ] ; r [ j + 1 ] = r [ 0 ] ; exchange = j ; } } } } int main ( ) { int r [ ] = { 0 , 15 , 28 , 32 , 25 , 18 , 16 } ; bubbleSort ( r ) ; for ( int i = 1 ; i <= 6 ; i ++ ) cout << r [ i ]

冒泡排序与指针结合

不羁岁月 提交于 2019-12-20 10:37:34
冒泡与选择排序为C语言排序经典,以下为经典样例,供读者参考 # include <stdio.h> //选择排序 void select ( int a [ ] , int n ) { int i , j ; for ( int j = 1 ; j < n - 2 ; j ++ ) for ( int k = j + 1 ; k < n - 2 ; k ++ ) { if ( a [ j ] > a [ k ] ) //升序 { int t ; t = a [ k ] ; a [ k ] = a [ j ] ; a [ j ] = t ; } } } //冒泡 void pro ( int a [ ] , int n ) { int i , j , k , t ; for ( int j = 1 ; j <= n ; j ++ ) for ( int k = 1 ; k <= n - j ; k ++ ) { if ( a [ k + 1 ] > a [ k ] ) { int t ; t = a [ k ] ; a [ k ] = a [ k + 1 ] ; a [ k + 1 ] = t ; } } } //冒泡的指针算法 void zhizhen ( int * b , int n ) { int i , j , k , * p ; for ( j = 0 ; j <= n

C语言实现冒泡排序

这一生的挚爱 提交于 2019-12-06 00:12:37
#include <stdio.h> #include <stdlib.h> #include <stdbool.h> int main() { int score[] = {1, 2, 3, 4, 5, 7, 6}; printf("before sort: "); for(int i=0;i < 7;i++) { printf("%d ", score[i]); } int sortTimes = BubbleSort(score, 7); printf("\nafter sort: "); for(int i=0;i < 7;i++) { printf("%d ", score[i]); } printf("\nsortTimes: %d", sortTimes); return 0; } int BubbleSort(int score[], int n) { int sortTimes=0,temp; bool sorted = false; for(int i=0;i < n-1;i++) { sorted = false; for(int j=0;j < n-i-1;j++) { if(score[j] > score[j+1]) { temp = score[j+1]; score[j+1] = score[j]; score[j] = temp;

c语言----- 冒泡排序 for while do-while 递归练习

坚强是说给别人听的谎言 提交于 2019-12-03 05:31:23
1. 冒泡排序简介(默认从小到大排序)  核心思想:只比较相邻的两个元素,如果满足条件就交换    5 8 2 1 6 9 4 3 7 0 目标:0 1 2 3 4 5 6 7 8 9   第一次排序:   5 < 8 不交换   5 8 2 1 6 9 4 3 7 0 8 >2 满足条件 交换....   5 2 8 1 6 9 4 3 7 0   5 2 1 8 6 9 4 3 7 0   5 2 1 6 8 9 4 3 7 0   5 2 1 6 8 9 4 3 7 0   5 2 1 6 8 4 9 3 7 0   5 2 1 6 8 4 3 9 7 0   5 2 1 6 8 4 3 7 9 0   5 2 1 6 8 4 3 7 0 9         下一次交换   2 5 1 6 8 4 3 7 0 9   2 1 5 6 8 4 3 7 0 9   2 1 5 6 8 4 3 7 0 9   2 1 5 6 8 4 3 7 0 9   2 1 5 6 4 8 3 7 0 9   2 1 5 6 4 3 8 7 0 9   2 1 5 6 4 3 7 8 0 9   2 1 5 6 4 3 7 0 8 9      下一次交换   1 2 5 6 4 3 7 0 8 9   1 2 5 6 4 3 7 0 8 9   1 2 5 6 4 3 7 0 8 9   1

第六次实验

时间秒杀一切 提交于 2019-12-02 16:39:54
目录 学号 2019-2020-1823 《数据结构与面向对象程序设计》实验六报告 1.实验内容 2实验过程及结果 3. 实验过程中遇到的问题和解决过程 其他(感悟、思考等) 学号 2019-2020-1823 《数据结构与面向对象程序设计》实验六报告 班级: 1823 姓名: 杨凯涵 学号:20182321 实验教师:王志强 实验日期:2019年10月22日 必修/选修: 必修 1.实验内容 1.链表练习,要求实现下列功能: 通过键盘输入一些整数,建立一个链表; 这些数是你学号中依次取出的两位数。 再加上今天的时间。 例如你的学号是 20172301 今天时间是 2018/10/1, 16:23:49秒 数字就是 20, 17,23,1, 20, 18,10,1,16,23,49 打印所有链表元素, 并输出元素的总数。 在你的程序中,请用一个特殊变量名来纪录元素的总数,变量名就是你的名字。 例如你叫 张三, 那么这个变量名就是 int nZhangSan = 0; //初始化为 0. 做完这一步,把你的程序签入源代码控制(git push)。 2.链表练习,要求实现下列功能: 实现节点插入、删除、输出操作; 继续你上一个程序, 扩展它的功能,每做完一个新功能,或者写了超过10行新代码,就签入代码,提交到源代码服务器; 从磁盘读取一个文件, 这个文件有两个数字。 从文件中读入数字1

C语言实现 冒泡排序 选择排序 希尔排序

巧了我就是萌 提交于 2019-11-27 19:25:55
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include <sys/timeb.h> #define MAX 100000 long getSystemTime() { struct timeb tb; ftime(&tb); return tb.time * 1000 + tb.millitm; } void Swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; } void PrintArray(int arr[], int length) { int i=0; for(i = 0; i < length; i++) { printf("%d ", arr[i]); } printf("\n"); } // 冒泡排序 void BubbleSort(int arr[], int length) { int i=0,j=0; for(i = 0; i < length; i++) { for(j = i + 1; j < length; j++) { if (arr[i] < arr[j]) { Swap(&arr[i], &arr[j]);